全部学科
Python全栈
python
NodeJS全栈
nodejs

JAVA集合框架专题测试

20 题 60 分钟 难度:★★

考察知识点

知识点模块题目数量题目编号
List接口与实现4道Q001-Q004,Q033
Set接口与实现3道Q005-Q007
Map接口与实现3道Q009-Q010,Q012
泛型与集合3道Q018-Q019
并发集合4道Q020-Q021,Q024-Q025
集合性能分析3道Q026,Q032,Q036
💡 参考答案在文末
判断题
1

使用Collections.synchronizedList(new ArrayList<>())创建的线程安全List,在遍历时不需要额外的同步措施。

A

B

2

Vector是线程安全的List实现,与ArrayList相比,它的方法大多使用synchronized关键字修饰,因此在多线程环境下应该优先选择Vector。

A

B

3

TreeSet可以存储任意类型的对象,只需要这些对象正确实现了equals()方法即可。

A

B

4

遍历Map时,使用entrySet()方法比使用keySet()方法更高效,因为entrySet()不需要额外的get操作来获取值。

A

B

5

Java中可以创建泛型数组,例如 new List[10] 是合法的语法。

A

B

单选题
6

关于ArrayList和LinkedList的区别,下列说法正确的是:

A

ArrayList基于链表实现,LinkedList基于数组实现

B

ArrayList随机访问效率高,LinkedList插入删除效率高

C

ArrayList和LinkedList都实现了RandomAccess接口

D

LinkedList比ArrayList更节省内存空间

7

在使用迭代器遍历ArrayList时,如果直接调用集合的add()方法添加元素,会抛出什么异常?

A

NullPointerException

B

ClassCastException

C

ConcurrentModificationException

D

IndexOutOfBoundsException

8

当向HashSet中添加元素时,判断元素是否重复的依据是什么?

A

只比较hashCode()的返回值

B

只比较equals()方法的返回值

C

先比较hashCode(),若相同再比较equals()

D

先比较equals(),若相同再比较hashCode()

9

以下哪个集合的contains(Object o)方法效率最低?

A

HashSet

B

ArrayList

C

TreeSet

D

LinkedList

10

以下关于HashMap和TreeMap的说法,正确的是:

A

HashMap和TreeMap都是线程安全的

B

TreeMap可以根据键进行排序,HashMap不保证顺序

C

HashMap的查询效率是O(n),TreeMap的查询效率是O(log n)

D

HashMap和TreeMap都允许null键和null值

11

当需要存储大量元素到ArrayList时,以下哪种方式性能最好?

A

直接使用new ArrayList<>()创建,然后逐个添加元素

B

使用new ArrayList<>(expectedSize)创建,预估容量

C

先添加到LinkedList,再转换为ArrayList

D

使用Collections.addAll()方法

12

Java 8中ConcurrentHashMap的线程安全机制是:

A

使用synchronized关键字锁住整个Map

B

使用分段锁(Segment)

C

使用CAS + synchronized锁住链表头节点或红黑树根节点

D

使用ReentrantLock锁住每个Node

13

以下代码能否编译通过?

Java
List<String> strings = new ArrayList<>();
strings.add("hello");
strings.add(123);
A

能编译通过,运行时抛出ClassCastException

B

能编译通过,运行时正常执行

C

不能编译通过,编译错误

D

不能编译通过,编译警告

多选题
14

关于List接口的特点,以下描述正确的有哪些?

A

List集合中的元素是有序的

B

List集合中的元素可以重复

C

List集合可以通过索引访问元素

D

List集合不允许存储null值

15

关于Java并发集合,以下说法正确的有哪些?

A

ConcurrentHashMap不允许null键和null值

B

CopyOnWriteArrayList适合读多写少的场景

C

BlockingQueue的take()方法在队列为空时会阻塞等待

D

ConcurrentLinkedQueue是无界线程安全队列,基于链表实现

16

在Java 8中,关于HashMap的说法正确的有哪些?

A

HashMap允许存储一个null键和多个null值

B

当链表长度超过8时,会自动转换为红黑树

C

HashMap的初始容量是16,负载因子默认是0.75

D

当元素数量达到容量×负载因子时,会自动扩容为原来的2倍

17

关于HashSet、LinkedHashSet和TreeSet的比较,下列说法正确的有哪些?

A

HashSet不保证元素顺序,LinkedHashSet保持插入顺序

B

TreeSet可以对元素进行排序

C

三者都不允许存储重复元素

D

HashSet的插入和查询效率是O(1),TreeSet的插入和查询效率是O(log n)

填空题
18

遍历Map集合的常用方式有三种:使用entrySet()方法获取键值对集合;使用____________方法获取键的集合;使用____________方法获取值的集合。

19

Java中List接口的三个主要实现类分别是____________(基于动态数组)、____________(基于双向链表)和____________(线程安全的动态数组)。

简答题
20

请简述ConcurrentHashMap和Hashtable的区别,为什么ConcurrentHashMap性能更好?

参考答案
1.错误 2.错误 3.错误 4.正确 5.错误 6.B 7.C 8.C 9.D 10.B 11.B 12.C 13.C 14.A;B;C 15.A;B;C;D 16.A;B;C;D 17.A;B;C;D 18.keySet();values() 19.ArrayList;LinkedList;Vector 20.
想在手机上练习这套试卷?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一套试卷 JAVA运算符与流程控制专题测试
下一套试卷 → JAVA面向对象基础专题测试
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码