1单选
ArrayList 类的底层数据结构是 ( C )
A.链表结构
B.哈希表结构
C.数组结构
D.红黑树结构
解析:ArrayList的实现类底层就是数组,会与ArrayList的一切操作也是对于数组。
2单选(2分)
在Java中,ArrayList类实现了可变大小的数组,便于遍历元素和随机访问元素。已知程序中创建了ArrayList类的对象bookTypeList,则下列语句中能够实现判断列表中是否存在字符串“小说”的是 ( A )
A.bookTypeList.contains("小说");
B.bookTypeList.get("小说");
C.bookTypeList.add("小说");
D.bookTypeList.remove("小说");
解析:add方法和remove方法肯定不是,而git方法是返回指定位置的,无法实现这个功能。而contains方法是可以实现的。
contains(Object o): 如果列表包含指定的元素,则返回 true。
3单选(2分)
用于存储键值对信息的接口是( D )
A.Set
B.Collection
C.List
D.Map
解析:Map接口储存的是键值对
4单选(2分)
LinkedList 类的特点是 ( B )
A.查询快
B.增删快
C.元素自然排序
D.元素不重复
解析: LinkedList 是一个用链表实现的集合,元素有序(这里的有序是指放入集合的顺序,不是指按照元素大小排序的)且可以重复。
5单选(2分)
Java 中的集合类包括 ArrayList 、LinkedList、HashMap 等,下列关于集合类描述正确的是?( ACD )
A.ArrayList 和 LinkedList 均实现了 List 接口
B.随机添加和删除元素时,ArrayList 的表现更加快速
C.ArrayList 访问速度比 LinkedList 快
D.HashMap 实现了 Map 接口,它允许任何类型的键和值对象,并允许将 null 用作键或值
解析:A就不多做解释了;
ArrayList其实是包装了一个数组 Object[],当实例化一个ArrayList时,一个数组也被实例化,当向ArrayList中添加对象是,数组的大小也相应的改变。这样就带来以下有缺点:
快速随即访问 你可以随即访问每个元素而不用考虑性能问题,通过调用get(i)方法来访问下标为i的数组元素。
向其中添加对象速度慢 当你创建数组是并不能确定其容量,所以当改变这个数组时就必须在内存中做很多事情。
操作其中对象的速度慢 当你要想数组中任意两个元素中间添加对象时,数组需要移动所有后面的对象。
LinkedList
LinkedList是通过节点直接彼此连接来实现的。每一个节点都包含前一个节点的引用,后一个节点的引用和节点存储的值。当一个新节点插入时,只需要修改其中保持先后关系的节点的引用即可,当删除记录时也一样。这样就带来以下有缺点:
操作其中对象的速度快 只需要改变连接,新的节点可以在内存中的任何地方
不能随即访问 虽然存在get()方法,但是这个方法是通过遍历接点来定位的所以速度慢。
说白了,就是数据结构中的顺序存储和链式存储
一般大家都知道ArrayList和LinkedList的大致区别:
1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
参考文章:
ArrayList常用方法总结
Java常用类:LinkedList类详解
ArrayList 和LinkedList各自的特点是什么?