一、为什么要有集合类
在程序中可以用数组来保存多个对象,但在某些情况下开发人员无法预测对象的多少,此时再用数组来储存并不合适。
例如:某学校要储存在校学生的信息,由于学校会不断有新的学生进来也会有毕业的学生出去,这是学生的数目就很难确定。
为了保存这些数目不确定的对象,JDK提供了一系列特殊的类,这个类可以储存任意类型的对象,并且长度可变,java中称这些类为集合。
二:Collection
Collection是单列集合的根接口,它有两个重要的子接口,分别是List和Set。其中List的特点是有序且可重复,Set的特点是无序且不可重复。
Collection常用方法
(1)List接口
List集合通过一种线性的方式进行存储,可以通过索引的方式访问集合中的指定元素。另外List集合还有一个特点就是元素有序,即元素存入顺序和取出顺序一致。
LIst接口有两个实现类,它们分别是ArrayList和LinkedList。ArrayList内部封装了一个长度可变的数组。若存入元素超出数组长度,ArrayList会在内存中分配一个长度更大的数组。LinkedList集合内部维护了一个双向循环链表,通过引用的方式记住前后的元素,从而将所有元素链接起来。
List集合的常用方法
LinkedList集合的常用方法
(2)Set接口
HashSet类:
HashSet是Set接口的实现类,它所储存的元素不可重复且无序。当向HashSet集合中添加一个对象时,首先会调用对象的hashCode方法来计算对象的哈希值,从而确定元素的位置。如果此时哈希值相同再调用equals方法来判断该位置元素是否重复。
package pan;
import java.util.*;
class MapExample{
public static void main(String[] args) {
Set set = new HashSet();
set.add("Jack");
set.add("Rose");
set.add("Lucy");
set.add("Rose");
Iterator it = set.iterator();
while(it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
}
}