一、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必须是单个枚举类的枚举值
- Hashtable:
* 使用Properties读写属性文件,key-value对;
三、Collection和Collections
Collection是集合框架的顶层接口,见一;
Collections是一个对collection操作的工具类,提供的都是静态方法(查找,排序,反转,加锁)
参考:《疯狂java讲义》(例子很多,以实用为主)
Java:集合,Collection接口框架图(找了一些参考,有些写得很乱,还是喜欢这种架构清晰的)
时间: 2024-10-26 02:19:59