1. List<E>:元素是有序的,可以重复,因为有索引
ArrayList : 数组结构,特定:查询快,增删慢,初始长度是10,50%延长
LinkedList : 链表数据结构,特点:增删快,查询慢
Vector : 数组结构,线程同步,被ArrayList代替,初始长度是10,100%延长,枚举是Vector特有的取出方式,优先使用迭代器
2. LinkedList总结 : 特殊方法
将指定元素插入此列表的开头
peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
removeFirst()
移除并返回此列表的第一个元素。
removeLast()
移除并返回此列表的最后一个元素。
offer(E e)
将指定元素添加到此列表的末尾(最后一个元素)。
offerFirst(E e)
在此列表的开头插入指定的元素。
注意: 1.addFirst(E e),addLast(E e)方法是添加到指定位置,不是替代,集合长度增加
2.
removeFirst(),removeLast()取出元素并移除,会抛出元素不存在异常,使用之前需要判断
3.
Set<E> :元素是无序的,不可以重复(底层使用的Map集合)
HashSet:哈希表结构,它存的是值得地址,先比较哈希值,再比较对象(equals方法)
TreeSet:可以对集合中元素排序(默认自然顺序)。存储自定义对象时,自定义对象必须实现Compared接口,并重写compareTo(T o)定义排序规则。TreeSet底层使用的二叉树排序算法,排序比较快
10.
TreeSet的第二种排序方式:当元素本身不具备比较性,或者没有所需要的比较性,这时就需要让集合本身具备需要的比较性。方法:定义比较器实现Comparator(接口),同样重写compare(T o)方法并传递给TreeSet的构造函数
注意:当一个TreeSet集合包含两种排序方式时,以比较器为主
4.
泛型:JDK1.5版本以后出现的新特性,用于解决安全问题,是一种安全机制,避免了强制转换的麻烦,并把强转异常转到了编译期,方便解决问题
5.Map
集合
:和Collection接口一样是顶层接口,和Collection接口没有必然的联系。Map集合以键值对形式存取对象,而且要保证键的唯一性。
基本方法
:
clear()
从此映射中移除所有映射关系(可选操作)。
containsKey(Object key)
如果此映射包含指定键的映射关系,则返回true。
containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回true。
entrySet() (重点方法)
返回此映射中包含的映射关系的Set
视图。
equals(Object o)
比较指定的对象与此映射是否相等。
get(Object key)
返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null
hashCode()
返回此映射的哈希码值。
isEmpty()
如果此映射未包含键-值映射关系,则返回true。
keySet()(重点方法)
返回此映射中包含的键的Set
视图
put(K key,V value)
将指定的值与此映射中的指定键关联(可选操作)。
putAll(Map<? extendsK,? extendsV> m)
从指定映射中将所有映射关系复制到此映射中(可选操作)。
remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。
size()
返回此映射中的键-值映射关系数。
values()
返回此映射中包含的值的Collection
视图
13.Map集合常用子类:
Hashtable:哈希表数据结构,键和值都不可为空,用作键的对象必须实现hashCode
方法和equals
方法,线程同步,jdk1.0开始使用
HashMap:哈希表数据结构,键和值都可为空,非线程同步,jdk1.2开始使用
TreeMap:二叉树数据结构,可以根据集合的键排序
6.Map集合取出方式:
Keyset:将集合中所有的键存入set集合,例:
Map<String,String> map = new HashMap< String , String >();
Set<String>key = map.keyset();
for(Iterator<String> it = key.iterator();it.hasnext();){
Stringvalue = map.get(it.next());
}
entryset: 将集合中的映射关系的存入Set 视图。
Map<String,String> map = new HashMap< String , String >();
Set< Entry < String,String >>key = map.entryset();
for(Iterator< Entry < String,String >> it = key.iterator();it.hasnext();){
Entry< String,String> entry = map.get(it.next());
String key = entry.getKey();
String value = entry.getValue();
}
7.注意Map集合中嵌套Map的情况