1.集合:可以存储一组数据类型不同的数据,并且元素个数不确定,可动态的对元素进行添加和删除
(1)Collection是集合的顶级父类,是接口,子接口:List和Set
List:有序可重复
Set:无序不可重复
List实现类:ArrayList(常用),LinkedList,vector
Set实现类:HashSet(常用),treeSet
(2)arrayList常用方法:
public int size();//返回列表中的元素个数
public Object get(int index);//返回指定位置的元素
public void set(int index,
Object obj);//设置指定位置元素
public void add(int index,
Object obj);//在列表指定位置插入元素
public void clear();//删除列表中所有元素
public void remove(int
index);//删除列表中指定位置元素元素
contains(Object obj);//判断列表中指定对象是否存在
isEmpty():如果此列表中没有元素,则返回true
返回此列表中首次出现的指定元素的索引,或如果此列表不包含元素,则返回-1。
(3)ArrayList和LinkedList的区别:
arrayList底层实现用长度可变的数组,遍历元素和查找元素的效率比较高,插入元素的效率比较低,因为每次插入元素都需要检测数组的长度够不够,如果不够需要进行数据扩容,比较耗时,所以效率比较低
LinkedList使用链表存储数据,插入和删除的效率比较高,查找元素的效率比较低
(4)vector:线程安全的,老版本,基本上不用
(5)Set集合是无序不可重复,不可重复如何实现:
在往set集合添加数据的时候,首先要调用该对象的hashCode()方法,返回的hashCode值相等,
则会调用该对象的equals方法,如果equals返回的true的话,认为给集合中有该对象,添加失败。
如果调用该对象的hashCode()方法,返回的hashCode值不相等,不再调用equals方法,可以直接添加成功。
如果equals返回true,hashCode值一定相等,如果hashCode值相等,equals不一定是true;
(6)Collection和Collections的区别:
Collection:是集合的上级接口,继承他的子接口有:list,set
Collections:是集合的工具类,提供了一些操作集合的静态方法
(7)Iterator:迭代器
hasNext():如果仍有元素可以迭代,则返回true。
next():返回迭代的下一个元素。
Remove():从迭代器指向的collection中移除迭代器返回的最后一个元素(可选操作)。
注意:用迭代器对集合进行遍历时,如果要对集合中的元素删除时,不能用集合的删除方法,可以用迭代器的删除方法
否则报:java.util.ConcurrentModificationException:并发修改的异常