java Collections框架

来源:互联网 发布:宝利通软件 编辑:程序博客网 时间:2024/06/06 03:00

Collections主要提供了List(列表),Queue(队列),Set(集合),Stack(栈)和Map(映射表,用于存放键值对)等数据结构。List,Queue,Set,Stack都继承于Collection接口。下面主要介绍实现Collection接口的List和Set类,和Map接口。

1Set接口:

特点:集合中的元素不能重复。

Set接口主要实现了两个实现类:

 1)HashSet : HashSet类按照哈希算法来存取集合中的对象,存取速度比较快

    Set  set=new HashSet();
   set.add("abc");
   set.add("cde");
   set.add("efg");
   set.add("fgh");    
   set.add("abc");
 2)TreeSet   : TreeSet类实现了SortedSet接口,能够对集合中的对象进行排序。

    Set  set=new TreeSet();
  set.add("abc");
  set.add("cde");
  set.add("efg");
  set.add("fgh");    
  set.add("abc");

2List集合:

按对象进入的顺序保存对象,可以对列表的每个元素的插入和删除位置进行精确的控制,还可以保存重复的对象。

List接口实现了3个实现类:

1)LinkedList:采用双向链表实现,随机访问效率低,插入元素效率高,因为不需要对数据进行移动,非线程安全。

2)ArrayList基于Object【】 array来实现的,在内存中开辟一块连续的空间来存储,索引速度快,插入元素慢。有一个初始化的容量大小,当存储的元素超过这个大小时,需要动态冲扩存储空间。默认扩充为原来的1.5倍。(没有提供方法来设置空间扩充的方法),非线程安全。

3)Vector和Array类似,但默认扩充为原来的2倍(每次扩充空间的大小是可以设置的),线程安全

3Map集合:

提供从键映射到值的数据结构。用于保存键值对,值可以重复,键是唯一的,不能重复。

Map接口实现了3个实现类

1)HashMap:基于散列表实现,采用对象的HashCode可以进行快速查询。

2)TreeMap:基于红黑树的数据结构,内部元素是按需排列。其实现了SortMap接口,从而实现排序

3)LinkedHashMap:采用列表来维护内部的顺序,是HashMap的一个子类,输出的顺序和输入的顺序相同,还可以按照读取顺序排列。

4)Hashtable:基于散列表实现,采用对象的HashCode可以进行快速查询。

5)WeakHashMap:与HashMap类似,采用的是“弱引用”,只要key不被外部引用,他就可以被垃圾回收器回收。而HashMap是“强引用‘,只要key不被外部引用,并且key从HashMap中删除后,才可以被垃圾回收器回收。

Hashtable和HashMap的区别:

1)HashMap允许空键,即null key。(最多只有一条记录的键为null)

2)HashMap非线程安全,效率高;Hashtable线程安全,效率低。





原创粉丝点击