java基础面试题(十六)

  1. 为什么Hashtable不允许键或者值是null?
    答:以下是Hashtableput()方法源码:
    在这里插入图片描述
    从上图可知如果key或者value为空那么都会报错。所以Hashtable不允许键或者值是null。

  2. ArrayList和LinkedList 有什么区别?
    答:ArrayList和LinkedList都实现了List接口。但是在数据结构的实现上ArrayList是数组,LinkedList是双向链表,所以LinkedList比ArrayList会更耗内存,因为它一个节点要存两个引用,一个指向上一个元素,一个指向下一个元素。而数组查找元素的时间复杂度是O(1),链表查找元素的时间复杂度是O(n),所以查询多的情况下,ArrayList比LinkedList更适合。那么如果是增删操作呢,只要不是首尾的增加或删除操作,那么LinkedList的效率就是比ArrayList高,因为ArrayList进行增删操作后,数组内就会有一些数据会受到影响,需要更换下标,影响的数据范围越广,效率越低。

  3. HashSet和TreeSet 有什么区别?
    答:HashSet是基于hash表实现的,所以它的元素是无序的。add(),remove(),contains()方法的时间复杂度是 O(1)。
    TreeSet是基于一个树形结构实现的,所以它的元素是有序的。add(),remove(),contains()方法的时间复杂度是 O(logn)。

  4. Java Enumeration接口是什么?
    答:Enumeration(枚举)接口的作用和Iterator类似,只提供了遍历Vector和HashTable类型集合元素的功能,不支持元素的移除操作。这种传统接口已被迭代器取代,虽然Enumeration 还未被遗弃,但在现代代码中已经被很少使用了。尽管如此,它还是使用在诸如Vector和Properties这些传统类所定义的方法中,除此之外,还用在一些API类,并且在应用程序中也广泛被使用。

  5. Enumeration接口和Iterator接口的区别有哪些?
    答:Enumeration的速度比Iterator快2倍,占用的内存更少。但是Iterator更安全,因为在用Iterator遍历集合时,是不允许其他线程修改集合里的元素的,同时Iterator还支持在遍历时删除元素的操作,Enumeration就做不到这些。

  6. hashCode()和equals()方法的重要性体现在什么地方?
    答: 对于HashMap来说,它使用hashCode()和equals()方法来确定键值对的索引,同时通过键获取值时也会用到这两个方法。如果没有正确的实现这两个方法,会导致不同的键有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。

  7. 什么是Java优先级队列(Priority Queue)?
    答:PriorityQueue是一个基于优先级堆的无界队列,它的元素是按照自然顺序(natural order)排序的。在创建的时候,我们可以给它提供一个负责给元素排序的比较器。PriorityQueue是不允许null值的,因为他们没有自然顺序,或者说他们没有任何的相关联的比较器。还有就是PriorityQueue不是线程安全的,它的入队和出队的时间复杂度是O(log(n))。最后,如果出现了相同优先级的元素,那么就按照入队顺序进行处理。

  8. 如何权衡是使用无序的数组还是有序的数组?
    答:从时间复杂度来权衡这两种数组。无序的数组查找的时间复杂度是O(n),有序的数组是O(logn)。无序的数组插入的时间复杂度是O(1),而有序的数组是O(n)。根据业务数据情况权衡使用。

  9. Collection与Collections有什么区别?
    答:Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类。
    Collections 是一个包装类,它包含有各种有关集合操作的静态多态方法,它不能被实例化,就像一个工具类。

  10. 如何决定何时用HashMap还是TreeMap?
    答:如果只是做插入,删除等操作,那么用HashMap是最好的,因为相对来说,HashMap的插入会更快。不过如果要对一个key集合做有序的遍历,那么TreeMap就是更好的选择了。

发布了166 篇原创文章 · 获赞 155 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_38106322/article/details/104231817
今日推荐