Java笔试面试练习题---集合

一、单选题
1.ArrayList类的底层数据结构是( A )
A、数组结构
B、链表结构
C、哈希表结构
D、红黑树结构

解析:ArrayList底层的实现就是一个数组(固定大小),当数组长度不够用的时候就会开辟一个新的数组,然后将原来的数据拷贝到新的数组里面。

2.LinkedList类的特点是(B )
A、查询快
B、增删快
C、元素不重复
D、元素自然排序

解析:LinkeList底层是一个链表,是由java实现的一个双向链表,其节点如下:
class Node{
private Node privious; //指向前一个节点
private Object value;//当前节点的value值
private Node next;//指向下一个节点的值,类似于指针
}
因此,它具有一般链表结构的特点,就是:查询慢、增删快。

3.Vector类的特点是( A )
A、线程同步
B、线程不同步
C、增删快
D、底层是链表结构

解析:Vector同ArrayList一样是在java中可以实现自动增长的对象数组。与ArrayList的一个显著区别就是Vector是线程安全的,也就是线程同步的。

4.关于迭代器说法错误的是( D)
A、迭代器是取出集合元素的方式
B、迭代器的hasNext()方法返回值是布尔类型
C、List集合有特有迭代器
D、next()方法将返回集合中的上一个元素.

解析:迭代器模式:就是提供一种方法对一个容器对象中的各个元素进行访问,而又不暴露该对象容器的内部细节。
Java.util.Iterator接口的方法如下:
boolean hasNext() 如果仍有元素可以迭代,则返回 true
E next()返回迭代的下一个元素。
List集合特有的迭代器:ListIterator listIterator() 该迭代器继承了Iterator迭代器,具有Iterator的所有方法。
它还具有特有的功能:
Object previous() 获取上一个元素
Boolean hasPrevious() 判断有没有上一个元素
另外,ListIterator可以逆向遍历list,但是前提是先正向遍历,然后才能逆向遍历。一般情况,不适用。

5.实现下列哪个接口,可以启用比较功能( D )
A、Runnable接口
B、Iterator接口
C、Serializable接口
D、Comparator接口
解析:

6.下面代码运行的结果是( A )
ArrayList al = new ArrayList();
al.add(true);
al.add(123);
al.add(“abc”);
System.out.println(al);
A、编译失败
B、[true,123]
C、[true,123,abc];
D、[abc];

7.ArrayList和Vector的区别说法正确的是( B )
A、ArrayList是线程安全的,Vector是线程不安全
B、ArrayList是线程不安全的,Vector是线程安全的
C、ArrayList底层是数组结构,Vector底层是链表结构
D、ArrayList底层是链表结构,Vector底层是数组结构

8.对于HashMap集合说法正确的是( C )
A、底层是数组结构
B、底层是链表结构
C、可以存储null值和null键
D、不可以存储null值和null键

9.下面类或者接口中,不属于集合体系的是( A )
A、java.util.Collections
B、java.util.Map
C、java.util.Vector
D、java.util.Hashtable

10.以下能以键_值对的方式存储对象的接口是( B )
A、java.util.Collection
B、java.util.Map
C、java.util.HashMap
D、java.util.Set

11.在Java中,( A )类可用于创建链表数据结构的对象。
A、LinkedList
B、ArrayList
C、Collection
D、HashMap

12.题示代码的功能为:对于一个存放Person对象的ArrayList进行循
环遍历。并输出每个Person对象的idCard和userName。 ( D )
public class Person{
private Long idCard;
pirvate String userName;
//以下是getter和setter方法
//省略
}
List list=new ArrayList<>();
Person p1=new Person();
p1.setIdCard(new Long(1001));
p1.setUserName(“terry”); Person p2=new Person();
p2.setIdCard(new Long(1002));
p2.setUserName(“tom”);
list.add(p1);
list.add(p2);
for( 位置① ){
System.out.println(person.getIdCard()+”:”+person.getUserName());
}
那么位置①处的代码为
A、List list:person
B、List list:Person
C、Person person:List
D、Person person:list

13.将集合转成数组的方法是( C )
A、asList()
B、toCharArray()
C、toArray()
D、copy()

14.使用TreeSet的无参构造创建集合对象存储元素时,该元素必须 ( A )
A、实现Comparable接口
B、有main方法
C、有get和set方法
D、实现Serializable接口

15.在JAVA中,LinkedList类和ArrayList类同属于集合框架类,下列( D )选项中的方法是LinkedList类有而ArrayList类没有的。
A、 add(Object o)
B、 add(int indexObject o)
C、 remove(Object o)
D、 removeLast()

16.在JAVA中ArrayList类实现了可变大小的数组,便于遍历元素和随机访问元素,已知获得了ArrayList类的对象bookTypeList,则下列语句中能够实现判断列表中是否存在字符串“小说”的是(C )。
A、 bookTypeList.add("小说");
B、 bookTypeList.get("小说");
C、 bookTypeList.contains("小说");
D、 bookTypeList.remove("小说");

17.下面关于Collection 和 Collections的区别正确的是( D )
A、Collections是集合顶层接口
B、Collection是针对Collections集合操作的工具类
C、List、Set、Map都继承自Collection接口
D、Collections是针对Collection集合操作的工具类

18.关于泛型的说法错误的是( C )
A、泛型是JDK1.5出现的新特性
B、泛型是一种安全机制
C、使用泛型避免了强制类型转换
D、使用泛型必须进行强制类型转换

19.下列哪种不是List集合的遍历方式 ( D )
A、Iterator迭代器实现
B、增强for循环实现
C、get()和size()方法结合实现
D、get()和length()方法结合实现

20.关于HashMap集合说法正确的是( B )
A、HashMap集合是单列集合
B、HashMap集合不允许存储重复键
C、HashMap集合不允许存储重复值
D、HashMap集合线程是安全的

二、多选题
1.在我们所学知识中,下面哪几项是接口( ABCD )
A.java.util.Map
B.java.util.Collection
C.java.util.List
D.java.util.Set

2.Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是( ABD
A.ArrayList和LinkedList均实现了List接口
B.ArrayList的查询速度比LinkedList快
C.添加和删除元素时,ArrayList的表现更佳
D.HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

3.下面关于HashMap和Hashtable的区别,说法正确的是( CD )
A.Hashtable线程不安全,效率高
B.HashMap线程安全,效率低
C.HashMap允许null键和值
D.Hashtable不允许null键和值

4.关于HashMap集合说法正确的是( AB )
A.HashMap集合是双列集合
B.HashMap集合不允许存储重复键
C.HashMap集合不允许存储重复值
D.HashMap集合线程是安全的

5.List集合的遍历方式有如下哪几种 ( ABC )
A.Iterator迭代器实现
B.增强for循环实现
C.get()和size()方法结合实现
D.get()和length()方法结合实现

6.下面集合中属于线程安全的类是( BD
A.ArrayList B.Vector
C.HashMap D.Hashtable

7.以下哪些继承自 Collection 接口( AB
A、List B、Set C、Map D、Array

三、填空
1.List 接口的特点是元素__ 有__(有|无)顺序,__ 可以_(可以|不可以)重复;
2.Set 接口的特点是元素__ 无__(有|无)顺序, _ 不可以__(可以|不可以)重复;
3.HashMap的底层是__ 数组+链表___结构,线程__ 不安全___(安全|不安全)。
4.Collection工具类提供了集合的工具方法,例如排序、复制等,Arrays工具类提供了对数组的工具方法,例如 排序、二分查找等。
5.集合一旦声明了泛型,便只能存储__ 泛型指定类型___的对象。

原文地址:https://www.cnblogs.com/nm666/p/8516708.html