50道集合框架面试题 (5)

1HashMap允许keyvaluenull,而HashTable不允许。

2HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。

3)在Java1.4中引入了LinkedHashMapHashMap的一个子类,假如你想要遍历顺序,你很容易从HashMap转向LinkedHashMap,但是HashTable不是这样的,它的顺序是不可预知的。

4HashMap提供对keySet进行遍历,因此它是fail-fast的,但HashTable提供对keyEnumeration进行遍历,它不支持fail-fast

5HashTable被认为是个遗留的类,如果你寻求在迭代的时候修改Map,你应该使用CocurrentHashMap

22.如何决定选用HashMap还是TreeMap

对于在Map中插入、删除和定位元素这类操作,HashMap是最好的选择。然而,假如你需要对一个有序的key集合进行遍历,TreeMap是更好的选择。基于你的collection的大小,也许向HashMap中添加元素会更快,将map换为TreeMap进行有序key的遍历。

23.ArrayListVector有何异同点?

ArrayListVector在很多时候都很类似。

1)两者都是基于索引的,内部由一个数组支持。

2)两者维护插入的顺序,我们可以根据插入顺序来获取元素。

3ArrayListVector的迭代器实现都是fail-fast的。

4ArrayListVector两者允许null值,也可以使用索引值对元素进行随机访问。

以下是ArrayListVector的不同点。

1Vector是同步的,而ArrayList不是。然而,如果你寻求在迭代的时候对列表进行改变,你应该使用CopyOnWriteArrayList

2ArrayListVector快,它因为有同步,不会过载。

3ArrayList更加通用,因为我们可以使用Collections工具类轻易地获取同步列表和只读列表。

24.ArrayArrayList有何区别?什么时候更适合用Array

Array可以容纳基本类型和对象,而ArrayList只能容纳对象。

Array是指定大小的,而ArrayList大小是固定的。

Array没有提供ArrayList那么多功能,比如addAllremoveAlliterator等。尽管ArrayList明显是更好的选择,但也有些时候Array比较好用。

1)如果列表的大小已经指定,大部分情况下是存储和遍历它们。

2)对于遍历基本数据类型,尽管Collections使用自动装箱来减轻编码任务,在指定大小的基本类型的列表上工作也会变得很慢。

3)如果你要使用多维数组,使用[][]List<List<>>更容易。

25.ArrayListLinkedList有何区别?

ArrayListLinkedList两者都实现了List接口,但是它们之间有些不同。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzgpxp.html