这里将Java集合和垃圾回收的知识总结,放到(二)中。对Java平台的理解、Java基础知识、面向对象请参考Java面试手册——高频问题总结(一)
- 四、Java集合
- 1. Java集合框架的基础接口有哪些?
- 2. Collection 和 Collections 有什么区别?
- 3. List、Set、Map是否继承自Collection接口?
- 4. HashMap 和 HashTable 的区别?
- 5. ArrayList、Vector 和 linkedList 的区别是什么?
- 6. Array 和 ArrayList 区别?
- 7. Map 和 ConcurrentHashMap 的区别?
- 8. HashMap的内部具体如何实现?
- 9. HashMap 底层,负载因子,为啥是2^n?
- 10. ConcurrentHashMap 锁加在了什么地方?
- 11. TreeMap 底层,红黑树原理?
- 12. ArrayList 是否会越界?
- 13. 什么是迭代器?Iterator 和 ListIterator 的区别是什么?
- 14. HashSet 的实现原理?
- 五、 JVM 和 垃圾回收 GC
- 六、Java 多线程
- 七、IO 和 NIO
Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接实现。
Set是一个不能包含重复元素的集合。
List是一个有序集合,可以包含重复元素。可以通过它的索引来访问任何元素。List更像长度动态变换的数组。
Map是一个将key映射到value的对象。一个Map不能包含重复的key:每个key最多只能映射一个value。
一些其它的接口有Queue、Dequeue、SortedSet、SortedMap 和 ListIteator。
2. Collection 和 Collections 有什么区别?Collection 是一个集合接口,它提供了对集合对象进行基本 *** 作的通用接口方法,所有集合都是它的子类,比如List、Set 等。
Collections 是一个包装类,包含了很多静态方法,不能被实例化,就像一个工具类,比如提供的排序方法:Collections.sort(list)。
3. List、Set、Map是否继承自Collection接口?List,Set是,Map不是。Map是键值对映射容器,与List和Set有明显的区别,而Set存储的零散的元素且不允许有重复的元素,List是线性结构的容器,适用于按数值索引访问元素的情况。
4. HashMap 和 HashTable 的区别?HashMap 和 HashTable 都实现了 Map 接口,很多特性相似。不同点如下:
- HashMap 允许 key 和 value 为 null,而 HashTable 不允许。
- HashTable 是同步的,而 HashMap 不是,所以HashMap适合单线程环境,HashTable适合多线程环境。
- 在Java1.4 中引入了linkedHashMap,HashMap 的一个子类,想要遍历顺序,很容易从HashMap 转向 linkedHashMap,但是HashTable的顺序是不可预知的。
- HashMap提供对key的Set进行遍历,因为它是fail-fast 的,但HashTable 提供对key的Enumeration 进行遍历,它不支持fail-fast。
- HashTable 被认为是个遗留的类,如果寻求在迭代的时候修改Map, 应该使用CourrentHashMap。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)