记录Java学习的笔记,关于集合的小总结
首先,集合类是为了保存数量不确定的数据,以及保存具有映射关系的对象。
1 集合与数组的区别
数组元素既可以是基本类型,也可以是对象(引用变量)
而集合只能保存对象。
(两者实际上保存的都是引用变量)
2 collection大框架
collection
set Queue List
Enumset Sortset Hashset Deque Priority ArrayList Vector
Queue
Treeset LinkedHashSet ArrayDeque LinkedList stack
3 Map 框架
v Map
EnumMap identityHashMap HashMap Hashtable LinkMap SortedMap WeakHashMap
LinkedHashMap properties TrerMap
4 使用java增强的 Iterator遍历集合元素(凡是collection类的都可以)
例:
Iterotor it=集合.iterator();
while(it.hasNext())
{
Object obj=it.next();
}
5 set集合
set集合是不包含重复元素的集合,这是总的特征。
6 HashSet类
HashSet按Hash算法存储元素,因此具有很好的存取和查找功能。
特点:
(1) 不能保证元素的添加顺序。
(2)不是同步的。
(3)集合元素可以是null。
HashSet集合元素判断相等:
其通过equals方法返回true且Hashcode值相等。
若是通过equals方法返回false但Hashcode值不相等,则这两个对象会
保存在一个位置,通过链表相连。
7 LinkedHashSet类
LinkedhashSet以Hashcode值决定存储位置,以链表维护元素次序。
8 TreeSet类
(1)TreeSet采用红黑树的数据结构来储存集合元素。
(2)TreeSet会调用comparableTo方法(Object Obj)来比较元素
之间大小关系,然后将元素升序排列。
(该方法返回零说明相等)
(TreeSet最好只添加一种类型的对象)
9 EnumSet类
EnumSet的所有元素都是指定枚举的枚举值
(1)EnumSet在内部以位向量的形式储存。
(2)EnumSet不允许加入null。
10 List集合
List集合代表有序且可重复的集合,集合中每个元素都有其对应
的索引,例如第一个加的元素索引为0。
(1)与Set集合相比,List集合增加了根据索引来插入、删除、替换
集合元素的方法。
(2)List集合判断元素相等是equals()方法比较返回false。
11 ArrayList实现类
ArrayList是基于数组实现的List类,所以List集合封装了一个动态的
允许再分配的Object数组。
(1)ArrayList是线程不安全的,所以性能较高。
12 Queue集合
Queue用于模拟队列这种数据结构,头部存放最先进的元素,尾部
存放最后进的元素,通常,队列不允许随机访问队列元素。
13 ProprityQueue实现类
ProprityQueue存放队列元素的顺序是按重新排列队列元素的大小重
新排序,不允许插入null元素。
14 Deque接口和AraayDeque实现类
Deque接口是Queue接口的实现类,该接口定义了一些双端队列的方
法,允许从两端操作队列元素。
(1)ArrayDeque类
栈:先进后出
以数组形式保存元素
15 LinkedList实现类
(1)可以通过索引随机访问集合的元素.。
(2)既可以当栈使用,也可以当队列使用。
(3)以链表的形式储存元素。
随机访问集合元素性能较差,插入、删除元素性能较好。
16 java增强的Map集合
Map用于保存具有映射关系的数据,一组保存Key,一组保存Value,
Key不允许重复,通过equals()方法比较大小,key和value具有一
对一的关系。
(1)从源码看,Java先是实现了Map类,再通过包装一个所有value
都为null的Map就实现了Set集合。
17java8改进的HashMap和Hashtable实现类
(1)区别:HashMap是线程不安全的。
Hashtable不允许将null作为key或value,法则将引发NullPointerException
异常。
(2)相同点:两个key的判断相等方式,都是通过equals()方法比较返回
true且Hashcode值相等。
18 LinkedHashMap实现类
通过双向链表来维护key-value对的次序。
19 ShortedMap接口和TreeMap实现类
类似于ShortSet和TreeSet,判断元素相等的方法都是通过compareTo()方
法来比较。
20 WeakHashMap实现类
WeakHashMap的key只保留了对实际对象的弱引用,这意味着WeakHashMap
key引用的对象有可能被垃圾回收,WeakHashMap也会自动删除这些key所对
s应得key-value对。
21 identityHashMap实现类
x在判断key相等时,两个key严格相等(key1=key2);
(1) 允许null作为key和value
22 EnumMap实现类
(1)EnumMapt所有key必须是单个枚举的枚举值。
(2)EnumMap在内部以数组形式保存。
(EnumSet在内部以位向量形式保存)
(3)EnumSet自然排序。
(4)不允许key位null,但允许value为null。
(EnumSet不允许加入null)