Java教程

Java Collection集合面试题3

上页

  1. HashMap和Hashtable的区别是什么?
    HashMap和Hashtable中都实现了Map接口,看起来相似,但有以下区别。
    HashMap允许null键和值,而Hashtable中不允许。
    Hashtable是同步的,HashMap不同步。所以HashMap是适合单线程环境,Hashtable适合多线程环境。
    Hashtable中被认为是传统类,如果你正在寻找MAP迭代时进行修改,,你应该使用ConcurrentHashMap。

  2. HashMap和TreeMap之间如何选择?
    HashMap适合在Map中插入,删除和定位元素。但是,如果你需要以排序的顺序遍历键,那么TreeMap是您更好的选择。根据您的集合的大小,添加元素HashMap可能会更快,然后将其转换为TreeMap排序遍历。

  3. ArrayList和Vector的相似之处和区别是什么?
    ArrayList和Vector在许多方面存在相似:
    两者都是指数为基础,由一个阵列内部备份。
    这两个保持插入的顺序,我们可以得到的插入顺序中的元素。
    迭代实现ArrayList和Vector都是快速失败的设计。
    ArrayList和Vector都允许空值和随机存取元素使用索引号。
    ArrayList和Vector之间的差异:
    Vector是同步的,而ArrayList是不同步。然而,如果你正在寻找迭代时修改的列表,你应该使用的CopyOnWriteArrayList。
    ArrayList是快于vector,因为它不具有任何开销,因为同步。
    ArrayList是更灵活,因为我们可以很容易使用集合实用工具类得到同步列表或只读列表。

  4. Array和ArrayList之间的差异是什么?什么时候使用Array的ArrayList?
    ArrayList可以只包含对象,数组可以包含原始对象。
    数组是固定大小,而ArrayList的大小是动态的。
    数组不提供功能一些ArrayList提供的addAll REMOVEALL 迭代等功能。
    如果列表中的大小是固定的,主要用于存储和遍历。
    对于原始数据类型的列表,虽然集合使用自动Casting,它仍然慢于数组。

  5. ArrayList和LinkedList之间的差异是什么?
    ArrayList和LinkedList都实现List接口,但它们之间存在一定的差异。
    ArrayList是一个基于数组的数据结构,所以它提供了随机访问它的元素表,性能表现为O(1),但LinkedList是存储数据的每一个节点都链接到它的上一个和下一个节点的节点列表。因此,即使有一个方法使用索引index来获得元素,其内部也是从开始到??达到索引节点遍历,然后返回元素,所以性能是O(N),比ArrayList慢。
    LinkedList的插入,添加或移除元素的速度更快,ArrayList的元素被添加时,会调整数组大小或更新索引。
    LinkedList比ArrayList消耗更多的内存。

  6. 哪些集合类提供了随机访问它的元素?
    ArrayList HashMap,TreeMap Hashtable类提供了随机访问它的元素。

  7. EnumSet是什么?
    java.util.EnumSetis实现使用枚举类型。枚举集的所有元素都必须在创建集合时或明或暗地被指定,EnumSet是不同步的,并不允许null元素。

  8. 什么集合类是线程安全的?
    Vector,Hashtable,Properties 和 Stack都是同步的 ,所以它们是线程安全的,可以在多线程环境中使用。包括Java 1.5的并发API允许迭代时修改,因为是针对他们的克隆操作,所以他们可以多线程环境中安全使用。

  9. 并发集合类是什么?
    Java 1.5的并发包(java.util.concurrent中)包含了线程安全的集合类,允许迭代时进行修改。通过设计迭代器是快速失败,如CopyOnWriteArrayList,ConcurrentHashMap和CopyOnWriteArraySet

  10. BlockingQueue是什么?
    java.util.concurrent.BlockingQueueis队列,进行拉取take和删除remove元素时能够等待队列中有元素时再操作,可以它主要用于实现生产者/消费者。实现类提供:ArrayBlockingQueue的LinkedBlockingQueue,PriorityBlockingQueue的SynchronousQueue等。

下页

Java多线程面试题

Spring面试题