JAVA基础---集合(六)--集合总结(面试前看)
2016-09-21 13:16
369 查看
进入学习第三阶段
1.6 总结:集合框架中常用类比较
用“集合框架”设计软件时,记住该框架四个基本接口的下列层次结构关系会有用处:
· Collection 接口是一组允许重复的对象。
· Set 接口继承 Collection,但不允许重复。
· List 接口继承 Collection,允许重复,并引入位置下标。
· Map 接口既不继承 Set 也不继承 Collection, 存取的是键值对
我们以下面这个图表来描述一下常用的集合的实现类之间的区别:
在回顾下该图
回顾下总结的知识点
**List
1. java提供的List就是一个”线性表接口”,ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现
2. Queue代表了队列,Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用)
3. 因为数组以一块连续内存来保存所有的数组元素,所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。
4. 内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能
5. 进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好
Map
1) HashMap和Hashtable的效率大致相同,因为它们的实现机制几乎完全一样。但HashMap通常比Hashtable要快一点,因为Hashtable需要额外的线程同步控制
2) TreeMap通常比HashMap、Hashtable要慢(尤其是在插入、删除key-value对时更慢),因为TreeMap底层采用红黑树来管理key-value对
3) 使用TreeMap的一个好处就是: TreeMap中的key-value对总是处于有序状态,无须专门进行排序操作
Set
1) HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet
2) 对于普通的插入、删除操作,LinkedHashSet比HashSet要略慢一点,这是由维护链表所带来的开销造成的。不过,因为有了链表的存在,遍历LinkedHashSet会更快
3) EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素
4) HashSet、TreeSet、EnumSet都是”线程不安全”的,通常可以通过Collections工具类的synchronizedSortedSet方法来”包装”该Set集合。
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(…));
排序
1) equals、compareTo决定的是怎么比的问题,即用什么field进行大小比较
2) 自然排序、定制排序、Comparator决定的是谁大的问题,即按什么顺序(升序、降序)进行排序
它们的关注点是不同的,一定要注意区分**
1.6 总结:集合框架中常用类比较
用“集合框架”设计软件时,记住该框架四个基本接口的下列层次结构关系会有用处:
· Collection 接口是一组允许重复的对象。
· Set 接口继承 Collection,但不允许重复。
· List 接口继承 Collection,允许重复,并引入位置下标。
· Map 接口既不继承 Set 也不继承 Collection, 存取的是键值对
我们以下面这个图表来描述一下常用的集合的实现类之间的区别:
在回顾下该图
回顾下总结的知识点
**List
1. java提供的List就是一个”线性表接口”,ArrayList(基于数组的线性表)、LinkedList(基于链的线性表)是线性表的两种典型实现
2. Queue代表了队列,Deque代表了双端队列(既可以作为队列使用、也可以作为栈使用)
3. 因为数组以一块连续内存来保存所有的数组元素,所以数组在随机访问时性能最好。所以的内部以数组作为底层实现的集合在随机访问时性能最好。
4. 内部以链表作为底层实现的集合在执行插入、删除操作时有很好的性能
5. 进行迭代操作时,以链表作为底层实现的集合比以数组作为底层实现的集合性能好
Map
1) HashMap和Hashtable的效率大致相同,因为它们的实现机制几乎完全一样。但HashMap通常比Hashtable要快一点,因为Hashtable需要额外的线程同步控制
2) TreeMap通常比HashMap、Hashtable要慢(尤其是在插入、删除key-value对时更慢),因为TreeMap底层采用红黑树来管理key-value对
3) 使用TreeMap的一个好处就是: TreeMap中的key-value对总是处于有序状态,无须专门进行排序操作
Set
1) HashSet的性能总是比TreeSet好(特别是最常用的添加、查询元素等操作),因为TreeSet需要额外的红黑树算法来维护集合元素的次序。只有当需要一个保持排序的Set时,才应该使用TreeSet,否则都应该使用HashSet
2) 对于普通的插入、删除操作,LinkedHashSet比HashSet要略慢一点,这是由维护链表所带来的开销造成的。不过,因为有了链表的存在,遍历LinkedHashSet会更快
3) EnumSet是所有Set实现类中性能最好的,但它只能保存同一个枚举类的枚举值作为集合元素
4) HashSet、TreeSet、EnumSet都是”线程不安全”的,通常可以通过Collections工具类的synchronizedSortedSet方法来”包装”该Set集合。
SortedSet s = Collections.synchronizedSortedSet(new TreeSet(…));
排序
1) equals、compareTo决定的是怎么比的问题,即用什么field进行大小比较
2) 自然排序、定制排序、Comparator决定的是谁大的问题,即按什么顺序(升序、降序)进行排序
它们的关注点是不同的,一定要注意区分**
相关文章推荐
- JAVA -- JAVA基础笔试、面试常见问题集合
- 黑马程序员:Java基础总结----集合框架的工具类
- 黑马程序员--集合框架知识总结和泛型--java学习日记7(基础知识)
- Java基础知识总结,面试可用
- 黑马程序员 Java基础知识总结-j集合框架
- java面试--java基础知识总结(待续)
- java对集合和迭代的操作基础总结
- Java基础面试:集合、内部类、线程
- Java基础总结09————集合框架(二)
- 黑马程序员 java基础--map集合总结
- 黑马程序员 java 基础面试常考题目总结
- 黑马程序员---Java基础总结--集合
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- Java集合概要及面试问题总结
- JAVA基础笔试、面试常见问题集合
- 黑马程序员:Java基础总结----Map集合
- java基础 Java集合总结
- 黑马程序员-Java基础-集合类总结
- Java基础之集合知识点总结一
- Java程序基础测试 基础笔试、面试常见问题集合