Java集合框架-你的面试首选!
Collection:代表一组对象,每一个对象都是它的子元素。 11. HashSet的底层实现是什么?通过看源码知道HashSet的实现是依赖于HashMap的,HashSet的值都是存储在HashMap中的。在HashSet的构造法中会初始化一个HashMap对象,HashSet不允许值重复,因此,HashSet的值是作为HashMap的key存储在HashMap中的,当存储的值已经存在时返回false。 12. HashSet和TreeSet有什么区别?HashSet是由一个hash表来实现的,因此,它的元素是无序的。add(),remove(),contains()TreeSet是由一个树形的结构来实现的,它里面的元素是有序的。因此,add(),remove(),contains()方法的时间复杂度是O(logn) 13. 为什么集合类没有实现Cloneable和Serializable接口?克隆(cloning)或者是序列化(serialization)的语义和含义是跟具体的实现相关的。因此,应该由集合类的具体实现来决定如何被克隆或者是序列化。 14. 数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList处理固定大小的基本数据类型的时候,这种方式相对比较慢。 15. Collection和Collections的区别。collection是集合类的上级接口,继承与它的接口主要是set和list。collections类是针对集合类的一个帮助类.它提供一系列的静态方法对各种集合的搜索,排序,线程安全化等操作。 16. Comparable和Comparator接口是干什么的?列出它们的区别。
Java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以个给两个对象排序。具体来说,它返回负数,0,正数来表明输入对象小于,等于,大于已经存在的对象。
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法线程安全,性能上比ArrayList差。 4. HashMap的数据结构。
jdk1.7:Hashmap实际上是一个数组和链表的散列表 5. HashMap的工作原理是什么?以键值对(key-value)的形式存储元素的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合/从集合添加和检索元素。当调用put()方法的时候,HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap的一些重要的特性是它的容量(capacity),负载因子(loadfactor)和扩容极限(thresholdresizing) 6. HashMap什么时候进行扩容呢?当hashmap中的元素个数超过数组大小loadFactor(加载因子)时,就会进行数组扩容,loadFactor的默认值为0.75。 7. List、Map、Set三个接口,存取元素时,各有什么特点?
List与Set具有相似性,它们都是单列元素的集合
(4)HashSet
(5)TreeSet
(6)HashMap
(7)HashTable
(8)TreeMap (编辑:江门站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |