原标题:Java(容器)面试题分享
温故而知新:温习学过的知识进而又能从中获得新的理解与体会。我们在学习技术的时候,也要时常回头复习一下之前学习过得知识,那么Java容器中的知识点你都掌握了吗?
1、Java 容器都有哪些?
答:数组,String,Java.util下的集合容器。
2、Collection 和 Collections 有什么区别?
答:1、Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式。
2、Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。
Collections 是一个包装类,Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许,一些 collection 是有序的,而另一些则是无序的。
3、List、Set、Map 之间的区别是什么?
答:List与Set都继承于Collection,List序列的形式存储元素。所以取出来的顺序可能和放入顺序不同。Set的特点是无法存放重复的元素。Map一个映射不能包含重复的键;每个键最多只能映射一个值。以键值对存放数据以上三个都是接口且不能被实例化。
4、HashMap 和 Hashtable 有什么区别?
答:Hashtable:
(1)无论是key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个Hashtable,效率低
(2)初始size为11,扩容:newsize=oldsize*2+1
Hashmap:
(1)可以存储null键和null值,线程不安全
(2)初始size为16,扩容:newsize =oldsize*2,size一定为2的n次幂
5、如何决定使用 HashMap 还是 TreeMap?
答:TreeMap的Key值是要求实现java.lang.Comparable,所以迭代的时候TreeMap默认是按照Key值升序排序的;TreeMap的实现也是基于红黑树结构。
而HashMap的Key值实现散列hashCode(),分布是散列的均匀的,不支持排序;数据结构主要是桶(数组),链表或红黑树。
大多情况下HashMap有更好的性能,所以大多不需要排序的时候我们会使用HashMap.
6、ArrayList 和 LinkedList 的区别是什么?
答:1、ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2、对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3、对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
7、ArrayList 和 Vector 的区别是什么?
答:1、同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的数。
2、数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半。
如果涉及到堆栈,队列等操作,应该考虑用Vector,如果需要快速随机访问元素,应该使用ArrayList。
学习过知识后,再通过面试题来复习自己学过的知识,也是一种帮助自己梳理知识点并查缺补漏的好方法。返回搜狐,查看更多
责任编辑: