Java Collection框架简略

来源:互联网 发布:魔兽6.2数据库 编辑:程序博客网 时间:2024/05/16 12:11

 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操作的工具类,提供的都是静态方法(查找,排序,反转,加锁)
Collection主要操作如下:

1. static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
       该方法是寻找T对象在List中匹配元素的位置。要求List集合中必须全部都是T对象,T对象必须实现Comparable接口, 如果查找成功返回对象在List中的位置,否则返回负数。该方法执行前首先要对List对象中的元素排序。该方法还有一个重载方法是:
       static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
       该方法也是查找T对象在List中的位置,List集合中必须全部是T元素,但是不要去T必须实现Comparable接口,而是要求传入一个比较器。
2. sort(List<T> list)
       对List中的元素按照自然排序。要按照用户自定义方式进行排序,必须实现Comparator接口。 sort (List<T> list, Comparator<? super T> c) 根据指定比较器产生的顺序对指定列表进行排序。
3. swap(List<?> list, int i, int j) 在指定列表的指定位置处交换元素。
4. reverse(List<?> list)反转指定列表中元素的顺序。


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

2 1
原创粉丝点击