集合类包括 ArrayList 、 LinkedList 、 HashMap 等,下列关于集合类描述错误的是?

A、ArrayList和LinkedList均实现了List接口

B、ArrayList访问速度比LinkedList快

C、随机添加和删除元素时,ArrayList的表现更加快速

D、HashMap实现Map接口,它允许任何类型的键和值对象,并允许将NULL用作键或值

本题考察的是面试者的java基础知识和对ArrayList和LinkedList的认识。

A,两个都是实现了List接口:

public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable

public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable, java.io.Serializable

两个类继承的抽象类中实现了List接口。

B,ArrayList底层是个动态数组,默认长度是10,默认扩容倍数是2,扩容就是数组复制。LinkedList底层是个双向链表。随机访问数组比较快。

C,随机添加和删除,对于ArrayList而言,前者调用 public void add(int index, E element) ,这个插入会把插入点的所有数据往后移动一位,很麻烦,后者public E remove(int index) 、 public boolean remove(Object o) 这两个方法一样的,都是要移动数组。而LinkedList(链表,靠指针实现)是需要改变一下Node节点中next的指向就可以了。

D,HashMap中K,V都可以是null,但是Hashtable中,K,V都不能是null,很多人会选择这个答案,Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现,它们都是集合中将数据无序存放的。

所以答案应该才C。

关注我们,每天都有精品面试题

相关文章