码迷,mamicode.com
首页 > 其他好文 > 详细

Collection框架简略

时间:2015-05-21 10:50:17      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

 Collection框架的结构

一、Collection结构框架图:

技术分享

二、Set、List、Queue、Map

  • Set:collection的派生接口,不允许重复元素——equal(),取出元素的方法只有迭代器。
    • HashSet:按Hash算法查找、存取性能好;顺序不定;非同步,线程不安全;元素可为null。(hash意义在于快速查找,根据元素的值便可快速查找其储存位置)
    • LinkedHashSet:Hashset 的子类,也是按hashcode决定储存位置,但用链表维护,使得元素顺序与添加顺序一致。其他比HashSet 慢,但遍历快;
    • TreeSet:用SortedSet接口实现的,采用红黑树数据结构储存。确保元素处于排序状态;
      • 1. 自然排序:调用Comparable接口的实现方法进行大小比较(必须实现Comparable接口);
      • 2. 定制排序:指定升序或降序。创建TreeSet时,提供一个Comparator对象;
    • EnumSet:元素必须是指定枚举类型值,有序;位向量形式储存,紧凑高效、运行效率高、批量操作快;不许加null;性能最好。
               * HashSet 与TreeSet推荐放入不可变类;HashSet性能总是比TreeSet好(添加、查询操作),都是线程不安全的!
  • List:collection的派生接口,允许重复元素。ListIterator(),返回Listiterator对象;
    • ArrayList: 基于数组实现List接口,线程不安全
    • Vector:     线程安全、有Stack子类,
    • LinkedList:基于链表实现List接口,插入、删除非常快;实现Deque接口,可作为栈来使用!
    • 固定长度的List: Array.asList("",""), 只能遍历,不能增加删除元素。
  • Queue:队列、先进先出;
    • PriorityQueue:先将队列按大小排序,将最小元素按队列取出。自然排序元素需实现Comparable接口,且元素属同一类;定制排序则创建队列是传入一Comparator对象,且不要求元素实现Comparable接口
    • Deque接口:双队列,Queue的子接口。可当做栈来使用。有pop及push方法;
    • ArrayDeque:Deque的实现类,可作为栈使用;
    • LinkedList:实现Deque接口及List接口,可当双端队列及栈使用。
  • Map: key-value;key不可重复!
    • Hashtable: 古老的Map实现类。线程安全。不允许null作key和value;
    • HashMap:  可用null作为key和value。以上两者可以对象必须实现hashCode()和equals()方法;
    • LinkedHashMap: HashMap的子类,用双向链表维护key-value对的次序(key),保持插入顺序;
    • SortedMap接口——>TreeMap实现类:红黑树数据结构;
    • WeakHashMap实现类:HashMap的key保留实际对象的强引用,WeakHashMap的key只保留对实际对象的弱引用。
    • IdentityHashMap实现类:key1==key2,俩key严格相等才为相等。
    • EnumMap实现类: 所有key必须是单个枚举类的枚举值
                * 使用Properties读写属性文件,key-value对;
三、Collection和Collections
Collection是集合框架的顶层接口,见一;
Collections是一个对collection操作的工具类,提供的都是静态方法(查找,排序,反转,加锁)



参考:《疯狂java讲义》(例子很多,以实用为主)
            Java:集合,Collection接口框架图(找了一些参考,有些写得很乱,还是喜欢这种架构清晰的)

Collection框架简略

标签:

原文地址:http://blog.csdn.net/waycaiqi/article/details/45888163

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!