集合类概述:
Java.util包中提供了一些集合类,这些集合类又被称为容器。集合类用来存放对象的引用。常用的集合有List集合、Set集合和Map集合,其中List与Set继承了Collection接口,各接口提供了不同的实现类。
Collection接口是层次接口中的根接口,该接口提供了添加元素、删除元素、管理数据的方法。由于List接口和Set接口都继承了Collection接口,因此这些方法对List集合和Set集合是通用的。常用方法:
1、add(E e) 将指定的对象添加到该集合中
2、Remove(Object o) 将指定的对象从集合中移除
3、IsEmpty() 返回boolean值,用于判断当前集合是否为空
4、Iterator() 返回在此collection的元素上进行迭代的迭代器。用于遍历集合中的对象
5、Size() 返回int型值,获取该集合中元素的个数
通常遍历集合,都是通过迭代器(Iterator)来实现。Collection接口中的iterator()方法可返回在此Collection进行迭代的迭代器。
例如:
Collection list = new ArrayList();
List.add(a);
Iterator it = list.iterator();
It.hashNext():该方法用于判断是否有下一个元素
List集合类:
List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序就是对象插入的顺序(可以是有序的,也可以是无序的)。类似于数组,可以通过索引来访问集合中的元素
常用方法:
1、get(int index) 获取指定索引位置的元素
2、Set(int index,Object obj) 将集合中指定索引位置的对象修改为指定的对象
List接口常用实现类有ArrayList和Linklist
ArrayList类实现了可变的数组,允许保存所有元素,包括null,并可以根据索引位置对集合进行快速的随机访问,地址空间是连续的;缺点是向指定的索引位置插入对象或删除对象的速度比较慢
LinkedList类采用链表结构保存对象。地址空间是不连续的,这种结构的优点是便于向集合中插入和删除对象。
这两个类都不是线程安全的,List还有一个实现类Vector,它和Arraylist本质是一样的,但它是线程安全的,所以查询数据时它的效率会比Arraylist低。
Set集合
Set集合中的对象不按特定的方式排序,只是简单地把对象加入集合中,但Set集合中不能包含重复对象。Set集合由Set接口和Set接口的实现类组成。Set的构造有一个约束条件,传如collection对象不能有重复值。
Set接口常用的实现类有HashSet和TreeSet:
HashSet类实现了Set接口,由哈希表(实际上是一个HashMap实例)支持。它不保证Set的迭代顺序,特别时它不保证该顺序恒久不变。此类允许使用null元素。
TreeSet类不仅实现了Set接口,还实现了SortedSet接口,因此,TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,即可以通过比较器对TreeSet类实现的Set集合中的对象进行排序。
TreeSet类的新增方法:
1、first():返回此Set中当前第一个(最低)元素
2、Last(): 返回此Set中当前最后一个(最高)元素
3、Comparator(): 返回对此Set中元素进行排序的比较器。如果此Set使用自然顺序,则返回Null
4、headSet(E toElement):返回一个新的Set集合,新集合包含toElement(不包含)之前的所有元素
5、SubSet(E fromElement,E fromElement):返回一个新的Set集合,包含fromElement(包含)对象与FromElement(不包含)对象之间的所有对象
6、tailSet(E fromElement) :返回一个新的Set集合,新集合包含对象fromElement(包含)之后的所有对象