1、 java中,提供了java集合框架(Java Collections Framework,JCF),对一些数据结构和相关算法进行封装。
2、 集合也是一种对象,但它是一种特殊的对象:对象的容器,用于存储、检索、操纵和传输对象。
3、 Java集合框架提供了用于管理集合的接口和类,包括接口、实现类和算法类。
4、 如下是集合的结构图:
|
|
5、 Collection接口置于最顶层,几乎所有的集合框架成员都源于自该接口,或者和它有密切的关系。是最核心的。
6、 列表(List) 直接从Collection中派生出来,它代表“有序集”(集合中的元素按照一定的顺序存放),由各种负责提供有序数据集合的集合类来实现。
7、List接口:
7.1 、List接口的实现类:
1) ArrayList: 在概念上与数组类似;区别在于ArrayList没有预先确定的大小,其长度可按需增大;
2) Vector: 与ArrayList几乎相同,在多线程中使用Vector比较安全。
3) LinkedList: 实现链表的功能,可以添加、删除或获取链表开头或结尾的元素。
4) Stack:是Vector的一个变体,实现了堆栈的功能。
7.1、List有:add();增,set();改,remove();删除,get();查,size();查看集合长度等方法。
8、Set接口:
8.1、Set接口从Collection接口中直接派生,列表是元素的有序集合,内容不能重复。而Set(集)则是元素唯一的集合(集中必须包含唯一的项)。
8.2、Set接口的实现类:
1)HashSet: HashSet中的数据是无序的。数据具有唯一性。
2)TreeSet: TreeSet是以树为基础的集,所以数据是有序的。从中继承的元素顺序可以 保证升序排列。
8.3、Set接口的方法有:add();remove();size();因为它存放的很散乱,没有下标,所以没有get()方法,所以我们要遍历set就必须使用Iterator迭代器或For-Each循环。
9、Map接口:
9.1、Map接口用于维护键/值对(key/value)。所以键都必须是唯一的。
9.2、Map接口的实现类:
1)HashMap:HashMap将它的键保存在哈希表中进行维护,键是唯一的,键顺序可变, 键/值都可以为空。
2)TreeMap:TreeMap的键存放在数中,键的顺序一定是升序排列。
3)HashTable:任何非null对象都可以用作键或值。
9.3、Map的常用方法:put();存;get();根据键取元素;keySet();返回此映射中包含的键的 Set
视图; values();返回此映射中包含的值的 Collection
视图;remove(); 根据键删除 值;size();取长度。
10、Iterator接口:
10.1、Iterator是一种用于遍历集合的接口。每个集合实现都有一个名为interator()的方法, 该方法返回Iterator类的一个实例。
10.2、Iterator接口的方法:
1)hasNext(); 如果集合中还有更多元素,该方法返回true;
2)next(); 返回集合中的下一个元素。
3)remove(); 删除iterator返回的最后一个元素。
例:
Set set = new HashSet();
set.add(1);
set.add(3);
set.add(2);
//迭代器
Iterator l = set.iterator();
while(l.hasNext()){
System.out.println(l.next());
}
11、For-Each:只要是集合都能用。
例:Set set = new HashSet();
set.add(1);
set.add(3);
set.add(2);
//for - each
for(Object a : set){
System.out.println(a);
}
12、泛型:
12.1、泛型是JDK1.5中的新功能。用来指定集合里元素的类型,可以得到强类型在编译的 时候进行类型检查的好处。
12.2、用法:ArrayList<integer> al = new ArrayList<Integer>();
13、算法类的方法有Collections(包含在collection上操作的算法,如排序(sort)、替换、查找等) 、Arrays(包含用来操作数组(比如排序和搜索)的各种方法) 、Comparator 、 Comparable。
14、枚举:只能取一定范围内的值。作用:1)控制取值;2)根据业务(位置)进行比较。
15、接口、类、枚举、注解都是直接创建文件的。