首先我们需要了解,为何会出现集合类这个概念?
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,用前面所学知识,我们只能采用对象数组实现。但是,对象数组的长度又是固定的,适应不了变化的需求,所以,java就提供了集合类供我们使用。
集合类的特点是:1.长度可变;2。只能存储对象;3.可以存储不同类型的对象。
那么数组和集合有何不同呢?对于集合来说,其长度可变,集合只能存储引用数据类型,同时集合能够存储不同数据类型的元素;而对于数组来说,它的长度固定,数组可以存储引用数据类型,也可以存储基本数据类型,但是数组存储的只能是同一种数据类型。(具体的关于基本数据类型与引用数据类型的区别请看我的另一篇博文。)
同时,由于我们需要的功能不同,java给我们提供了许多种集合类给我们使用,这些集合类相差不多,但是其本质上有着最大的区别:他们的底层数据结构不同,这里所说的数据结构也就是数据的存储方式。
Collection的功能主要有以下几个方面:
A:添加功能
boolean add(Object obj):往集合中添加一个元素
boolean addAll(Collection c):往集合中添加多个元素。
B:获取功能
Iterator iterator():迭代器
int size():集合的元素个数,长度
C:删除功能
void clear():清空集合的所有元素
boolean remove(Object obj):从集合中移除一个元素
boolean removeAll(Collection c):从集合中移除多个元素(返回值时,删除一个就是删除,就会返回true)
D:判断功能
boolean contains(Object obj):判断集合中是否包含指定的元素
boolean containsAll(Collection c):判断集合中是否包含指定的多个元素(返回值时,必须全部包含,才是包含)
boolean isEmpty():判断集合是否为空
E:交集元素
boolean retainAll(Collection c)//A.retainAll(B)用A对B做交集 交集元素存储在A集合,B集合不发生改变。 返回值表达是A集合是否发生过改变。
F:转数组
Object[] toArray():把集合转成对象数组 一般转换成功后会对转换后的Object数组进行遍历并对每一个元素进行强制类型转换,从而得到自己想要的类型,如自己定义的class或者String类型。String s = (String)objs[x];
需要注意的是以上的功能函数返回的都是boolean类型的值即false与true。
下面总结一下集合的具体使用步骤:
1、创建集合对象 Collection c =new ArrayList();
2、创建元素对象 Student s1 = new Student(“aaa”);
3、把元素添加到集合 c.add(s1);
4、遍历集合 一般使用iterator()即迭代器或用常规判断转换类型后长度进行循环 Object[] objs = c.toArray();
for (int x = 0; x < objs.length; x++) {
Student s = (Student) objs[x];
System.out.println(s.getName())
}
下面对iterator()的用法进行详细讲解:
Iterator iterator()
boolean hasNext():是否有下一个元素
Object next():获取下一个元素,并自动移动到下一个位置等待
运用上述函数可能会出现如下的错误提示:
NoSuchElementException:没有这样的元素异常。原因是:你已经获取到元素的末尾了,你还要获取元素,已经没有元素了,所以报错。
因此,上面的4过程可以使用以下程序进行:
while (it.hasNext()) {
String s = (String) it.next();
System.out.println(s);
}
Collection接口其中包含一些主要的常见方法,如:
size();
isEmpty();
clear();
contains();
add();
remove();