发表于: 2018-01-06 01:09:43
2 851
今天完成
1.集合类的学习;
集合类又称为容器
集合类存放的都是对象的引用,而非对象本身;
常用的集合类型主要有3种:set(集)、list(列表)和map(映射);
List和Set继承了Collection接口;
1).Collection接口
a.Collection接口是层次结构中的根接口(Map也是根接口);
b.构成Collection的单位称为元素;
c.List接口和Set接口继承Collection接口;
d.迭代器Iterator的学习; (以下是网上查的资料整理和一点点修改)
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值。
迭代器(iterator)有时又称游标(cursor)是程序设计的软件设计模式;迭代器是一种对象,它能够用来遍历标准模板库容器中的部分或全部元素,每个迭代器对象代表容器中的确定的地址。
Iterator主要有三个方法:hasNext()、next()、remove();
hasNext:没有指针下移操作,只是判断是否存在下一个元素;
next:指针下移,返回该指针所指向的元素;
remove:删除当前指针所指向的元素,一般和next方法一起用,这时候的作用就是删除next方法返回的元素;
I.当创建完成指向某个集合或者容器的Iterator对象时,这时的指针其实指向的是第一个元素的上方,即指向一个空
II、当调用hasNext方法的时候,只是判断下一个元素的有无,并不移动指针
III、当调用next方法的时候,向下移动指针,并且返回指针指向的元素,如果指针指向的内存中没有元素,会报异常。
IV、remove方法删除的元素是指针指向的元素。如果当前指针指向的内存中没有元素,那么会抛出异常;
2).List集合
List集合包括了List接口及List接口的所有实现类;
List接口:
通过set()方法和get()方法取得索引位置的元素或修改指定位置的对象;
List接口的常用实现类:ArryList和linkedList
import java.util.*;
public class Gather {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
int i = (int) (Math.random() * (list.size() - 1));
System.out.println("随机获取数组中的元素:" + list.get(i));
list.remove(2);
System.out.println("将索引是'2'的元素从数组移除后,数组中的元素是:");
for (int j = 0; j < list.size(); j++) {
System.out.println(list.get(j));
}
}
}
3).Set集合
Set常用的实现类有HashSet类和TreeSet类
package practice;
import java.util.*;
class UpdateStu implements Comparable<Object>
{
String name;
long id;
public UpdateStu(String name, long id)
{
this.id = id;
this.name = name;
}
public int compareTo(Object o)
{
UpdateStu upstu = (UpdateStu) o;
int result = id > upstu.id ? 1 : (id == upstu.id ? 0 : -1);
return result;
}
public long getId() //构造获取ID方法
{
return id;
}
public void setId(long id) //构造设置ID方法
{
this.id = id;
}
public String getName() //构造获取name方法
{
return name;
}
public void setName(String name) //构造设置name方法
{
this.name = name;
}
public static void main(String[] args)
{
UpdateStu stu1 = new UpdateStu("李同学", 01011);//创建UpdateStu对象
UpdateStu stu2 = new UpdateStu("陈同学", 01021);
UpdateStu stu3 = new UpdateStu("王同学", 01051);
UpdateStu stu4 = new UpdateStu("马同学", 01012);
TreeSet<UpdateStu> tree = new TreeSet<>();
tree.add(stu1);
tree.add(stu2);
tree.add(stu3);
tree.add(stu4);
Iterator<UpdateStu> it = tree.iterator();//Set集合中的所有对象的迭代器
System.out.println("Set集合中的所有元素:");
while (it.hasNext()) //遍历集合
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
it = tree.headSet(stu2).iterator();//截取排在stu2与stu3之间的对象
System.out.println("截取前面部分的集合:");
while (it.hasNext()) //遍历集合
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
it = tree.subSet(stu2, stu3).iterator();
System.out.println("截取中间部分的集合");
while (it.hasNext())
{
UpdateStu stu = (UpdateStu) it.next();
System.out.println(stu.getId() + " " + stu.getName());
}
}
}
明天计划
1.完成集合类的学习;
2.spring的学习;(今天看看基础太久了)
遇到的问题
引用数据类型的强制类型转换;
通过看论坛已理解部分,需要进一步学习;
评论