Javase笔记之集合类

来源:互联网 发布:淘宝饰品店店铺介绍 编辑:程序博客网 时间:2024/04/30 16:23


记录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)






 


1 0
原创粉丝点击