Java集合构架
1. java集合构架支持三种类型:set、list、map,java集合构架中的所有具体类都实现了Cloneable与Serializable接口。
Set中存储一组互不相同的元素
List中存储一组顺序排列的元素
Map中存储键值对
说明:HashSet与HashMap等基于hash的集合元素相等判断方式为:先使用hashcode()方法判断是否相同,若相同再使用equals()方法判断是否相同,若两者均相同才同。
TreeSet与TreeMap等基于Tree的集合元素排序方式为:原理聚焦于二叉搜索树。两种排序方式:自然排序与集合比较器排序。
注:可使用Collections.reverseOrder()方法获得逆自然顺序比较器。
2. 规则集Set
存储一组互不相同的元素,是否相同由元素的散列码判断
具体类:
a.HashSet 特点:无序、高效
b.LinkedHashSet 特点:插入有序
c.TreeSet 特点:排列有序
注:只有对象之间相互可比时,才能将其加入到TreeSet中,两种可比方式:1. 元素实现Comparable接口 2.给规则集指定比较器
创建比较器格式如下:
Public class xxx implements Comparator{
Public int compara(Object a, Object b){
//实现
}
}
另外,建议使用new TreeSet(Collection)方式创建规则集,因为其只进行一次排序。而如果使用创建空TreeSet,然后使用add()方式添加元素的话,效率低下,因为每次add都会使规则集排序一次。
3. 线性表List
存储一组顺序排列的元素,即可以直接用下标访问集合元素
a.ArrayList 特点:数组线性表,查、改效率高
b.LinkedList 特点:链式线性表,删、增效率高
c.Vector 特点:同步
d. Stack 特点:栈
4. 图Map
存储一组键值对
a1.HashMap 数组结构:哈希表、非同步,K、V可以为空。特点:查、插、删效率高
a2.HashTable 数组结构:哈斯表、同步、K、V不可以为空,现已被HashMap所替代。
b.LinkedHashMap 特点:可按插入顺序(默认)或访问顺序排序
c.TreeMap 数组结构:二叉树。特点:按键值顺序排序,可参照TreeSet说明。
5. 泛型(广泛的类型)
格式:eg:Set<String>set=new TreeSet<String>();
用途:当集合类型不确定时,将运行时异常转换为编译时异常。
自定义泛型类: class mm<T>{ ...}
自定义泛型方法:public <T> void mm(){...}
注意:若方法参数指定为ArrayList<父类>,则传入参数必须为ArrayList<父类>,两者必须完全相同。而ArrayList<? extends 父类>、ArrayList<? super 子类>代表两种体系,这种方式称为泛型限定。
6. 集合操作类Collections
包含了大量处理线性表方法和创建同步集合、不可修改集合静态方法。
7. 数组操作类Arrays
包含了大量数组操作方法。
8. 迭代器Iterator
是一个用于遍历集合的接口
9. 高级for循环
使用格式:for( 类型 mm:集合or数组){...} //凡是支持迭代器的集合均支持高级for循环。