一.单选题(共41题,36.9分)
答案解析:Hashtable类有一个子类Properties在实际应用中非常重要,Properties主要用来存储字符串类型的键和值。
2下面哪个对象不能直接获取java.util.Iterator迭代器。()
答案解析:java.util.Iterator可以对collection接口实现类进行迭代,HashTable不能被直接迭代。
4public class Example {
public static void main(String[] args) {
ArrayList list = new ArrayList(); // 创建ArrayList集合
list.add("Tom"); // 向该集合中添加字符串
list.add("Jerry");
Iterator it = list.iterator(); //获取迭代器
it.next();
it.next();
System.out.println(it.next());
}
}
运行以上程序,输出结果是( )
- A、Tom
- B、null
- C、""
- D、发生异常,输出异常信息
5下列关于ArrayList的描述中,错误的是()
答案解析:ArrayList集合中的元素索引从0开始。
7java.util.*;Student { String ; String ; Student(String name, String age) { .= name; .= age; } String toString() { + + ; }}Example{ main(String[] args) { Set set = HashSet(); set.add(Student(, )); set.add(Student(, )); set.add(Student(, )); System..println(set.size()); }}
下列选项中,程序的运行结果是( )
答案解析:HashSet存储的元素是不可重复的,添加元素时,需要先后调用hashCode()方法和equals()方法比较元素是否相同,但是如果没有重写,程序就会根据Object类中的hashCode()和equals()方式比较,而根据它的比较方式,两个Tom:10是不相等的。所以结果HashSet中会有三个元素。
8下列关于LinkedList类的方法,不是从List接口中继承而来的是( )
答案解析:pop()方法表示移除并返回此列表的第一个元素,是LinkedList特有的方法。
9下列关于List接口的描述中,错误的是()
- A、List接口继承自Collection接口,是单列集合。
- B、List集合中允许出现重复的元素。
- C、List集合存储元素是有序的,即元素的存入顺序和取出顺序一致。
- D、List集合中所有的元素是以二叉树方式进行存储的。
答案解析:List集合中所有的元素是以线性方式进行存储的。
10下列集合中,不属于Collection接口的子类的是( )
答案解析:Properties集合属于Map集合的子类。
11下列List接口的方法,不是从Collection接口中继承而来的是()。
答案解析:get()方法返回列表中指定位置的元素,不是继承自Collection接口。
12阅读下面的程序
public class Example{
public static void main(String[] args) {
String[] strs = { "Tom", "Jerry", "Donald" };
// foreach循环遍历数组
for (String str : strs) {
str = "Tuffy";
}
System.out.println(strs[0] + "," + strs[1] + "," + strs[2]);
}
}
下列选项中,程序的运行结果是( )
答案解析:当使用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。但是像本题程序中那样尝试进行修改,并不会发生异常,只是对元素的修改不成功,集合或数组中的元素仍然是从前的值。
13下列关于LinkedList的描述中,错误的是( )
- A、LinkedList集合对于元素的增删操作具有很高的效率。
- B、LinkedList集合中每一个元素都使用引用的方式来记住它的前一个元素和后一个元素。
- C、LinkedList集合对于元素的查找操作具有很高的效率。
- D、LinkedList集合中的元素索引从0开始。
答案解析:由于LinkedList是双向循环链表结构,他的增删操作效率高但是查询操作没有ArrayList高。
14以下关于foreach的说法中,哪一个是错误的()
- A、使用foreach遍历集合时,可以对元素进行修改。
- B、foreach可以对数组进行遍历。
- C、foreach可以对集合进行遍历。
- D、foreach循环是一种更加简洁的for循环,也称增强for循环。
答案解析:使用foreach遍历集合或数组时,不能对其值进行修改。
15下列关于ArrayList的描述中,错误的是()。
答案解析:ArrayList集合中的元素索引从0开始
16阅读下段代码
import java.util.Enumeration;
import java.util.Properties;
public class Demo {
public static void main(String[] args) {
Properties p = new Properties();
p.setProperty("userame", "tom");
Enumeration names = p.propertyNames();
while (names.hasMoreElements()) {
String key = (String) names.nextElement();
String value = p.getProperty(key);
System.out.println(key + " = " + value);
}
}
}
下列选项中,哪一个是程序执行后的结果( )
答案解析:使用setProperty()方法向Properties添加一对值,前一个参数为key,后一个参数为value。
17阅读下面代码:
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for (Object obj : list) {
if (obj.equals("bbb")) {
list.remove(obj);
}
}
System.out.println(list);
}
}
下列选项中,哪一个是程序执行后的结果()
- A、[aaa,ccc]
- B、[aaa,bbb,ccc]
- C、[]
- D、以上都不对
答案解析:在对list集合进行遍历时,判断如果对象是”bbb”则移除这个对象所以集合中只剩下[aaa,ccc]。
- A、HashSet是Set接口的一个实现类
- B、向HashSet存入对象时,对象一般会重写hashCode()和equals()方法
- C、向HashSet存入对象时,对象的equals()方法一定会被执行
- D、HashSet存储的元素是不可重复的
答案解析:当调用HashSet集合的add()方法存入元素时,首先调用当前存入对象的hashCode()方法获得对象的哈希值,然后根据对象的哈希值计算出一个存储位置。如果该位置上没有元素,则直接将元素存入,如果该位置上有元素存在,才会调用equals()方法让当前存入的元素依次和该位置上的元素进行比较。
19下列关于泛型的说法中,错误的是( )
答案解析:泛型是JDK5.0的新特性。
20下列方法中可以用于往HashSet集合中添加元素的是( )
答案解析:用于往集合中添加元素的方法是add(E e)。
contains(Object o)方法用于判断set集合中是否包含指定的元素,
clear()方法移除此set集合中的所有元素,
21下面关于List集合的描述中,哪一个是错误的()
答案解析:List集合中所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。
23关于Lambda表达式的语法格式,下列说法错误的是()
- A、()-> System.out.println("Hello Lambda!");描述的无参数无返回值
- B、(x) -> System.out.println(x);描述的是有一个参数并且有返回值
- C、Comparator<Integer> com = (x, y) -> {System.out.println("函数式接口");return Integer.compare(x, y); };描述的是有两个以上的参数,有返回值,并且 Lambda 体中有多条语句
- D、Comparator<Integer> com = (x, y) -> Integer.compare(x, y);描述的是若Lambda 体中只有一条语句,return 和大括号都可以省略不写
答案解析:Hashtable类有一个子类Properties在实际应用中非常重要,Properties主要用来存储字符串类型的键和值
25下列关于集合的描述中,哪一个是错误的( )
- A、集合按照存储结构可以分为单列集合Collection和双列集合Map。
- B、List集合的特点是元素有序、元素可重复。
- C、Set集合的特点是元素无序并且不可重复。
- D、集合存储的对象必须是基本数据类型。
答案解析:集合可以存储多种数据类型的数据,包括引用数据类型
26下列方法中,不能用于删除Collection集合中元素的是()。
答案解析:isEmpty()方法是用来判断集合是否为空的,不能删除集合中的元素
27下列选项中,哪个可以正确地定义一个泛型()
- A、ArrayList<String> list = new ArrayList<String>();
- B、ArrayList list<String> = new ArrayList ();
- C、ArrayList list<String> = new ArrayList<String>();
- D、ArrayList<String> list = new ArrayList ();
public class Example{
public static void main(String[] args) {
String[] strs = { "Tom", "Jerry", "Donald" };
// foreach循环遍历数组
for (String str : strs) {
str = "Tuffy";
}
System.out.println(strs[0] + "," + strs[1] + "," + strs[2]);
}
}
下列选项中,程序的运行结果是()。
答案解析:当使用foreach循环遍历集合和数组时,只能访问集合中的元素,不能对其中的元素进行修改。但是像本题程序中那样尝试进行修改,并不会发生异常,只是对元素的修改不成功,集合或数组中的元素仍然是从前的值。
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add("aaa");
list.add("bbb");
list.add("ccc");
for (Object obj : list) {
if (obj.equals("bbb")) {
list.remove(obj);
}
}
System.out.println(list);
}
}
下列选项中,哪一个是程序执行后的结果( )
- A、[aaa,ccc]
- B、[aaa,bbb,ccc]
- C、[]
- D、以上都不对
答案解析:在对list集合进行遍历时,判断如果对象是”bbb”则移除这个对象所以集合中只剩下[aaa,ccc]。
31下列关于集合的描述中,哪一个是错误的( )
- A、集合按照存储结构可以分为单列集合Collection和双列集合Map。
- B、List集合的特点是元素有序、元素可重复。
- C、Set集合的特点是元素无序并且不可重复。
- D、集合存储的对象必须是基本数据类型。
答案解析:集合可以存储多种数据类型的数据,包括引用数据类型。
32阅读下面的程序
import java.util.*;
class HashSetDemo{
public static void main(String[] args){
HashSet hs = new HashSet();
hs.add("abc");
hs.add("abc");
System.out.println(hs);
}
}
下列选项中,哪一个是程序的运行结果( )
- A、[abc]
- B、[abc,abc]
- C、编译失败
- D、运行成功,无输出结果
答案解析:Set集合中存储的是不重复元素。
33Java语言中,集合类都位于哪个包中( )
答案解析:集合类都位于java.util包中。
34下面关于java.util.HashMap类中的方法描述错误的是( )
- A、containsKey(Objectkey)表示如果此映射包含对于指定的键,则返回true
- B、remove(Objectkey)表示从此映射中移除指定键的映射关系(如果存在)
- C、size()表示返回此映射中的键-值映射关系数
- D、values()表示返回此映射所包含的键的Collection视图
答案解析:values()表示返回此映射所包含的值的Collection视图,而不是键的Collection视图。
35Java语言中,集合类都位于哪个包中( )
答案解析:集合类都位于java.util包中
36下列选项中,不属于HashMap类的方法的是()
答案解析:comparator()方法是TreeMap类中的方法。
37下列集合类中,能和IO流结合使用的是()
答案解析:Properties集合类是唯一一个可以和IO流结合使用的集合类。
38下列方法中,可以往HashSet集合中添加元素的是( )
答案解析:用于往集合中添加元素的方法是add(E e)。
39下面关于List集合的描述中,哪一个是错误的( )
答案解析:List集合中所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素。
40下列关于foreach循环的描述,错误的是( )
- A、foreach循环只能用于遍历数组或集合中的元素
- B、foreach循环可以直接用于遍历Map集合中的元素
- C、相当于传统for循环来说,foreach循环简化了书写
- D、foreach循环遍历过程中不能对集合或数组元素进行修改
答案解析:数组或者实现Iterable接口的对象才能使用foreach循环,Map集合不符合要求,显然不能直接使用foreach循环。
41下列选项中,不属于HashMap类的方法的是()
答案解析:comparator()方法是TreeMap类中的方法
二.多选题(共14题,12.6分)
- A、HashMap集合是Map接口的一个实现类
- B、HashMap集合存储的对象都是键值映射关系
- C、HashMap集合存储的对象,必须保证不出现重复的键
- D、HashMap集合中,如果存储的键名称相同,那么后存储的值则会覆盖原有的值,简而言之就是,键相同,值覆盖
答案解析:HashMap集合是Map接口的一个实现类,它用于存储键值映射关系,但必须保证不出现重复的键。如果存储了相同的键,后存储的值则会覆盖原有的值,简而言之就是,键相同,值覆盖。
2下列选项中,哪些特点是属于LinkedList集合的()
答案解析:LinkedList集合中允许出现重复的元素,它的底层采用链表结构所以增删操作具有很高的效率。
3下列选项中,哪些特点是属于LinkedList集合的( )
答案解析:LinkedList集合中允许出现重复的元素,它的底层采用链表结构所以增删操作具有很高的效率。
4下面关于java.util.HashMap描述中,哪些是正确的()
5TreeMap中所有的键是按照某种顺序排列,确定键的排列顺序的依据是以下哪几项()
6下列选项中,哪些方法是LinkedList类独有的( )
答案解析:addLast()方法是LinkedList集合的方法
8以下关于foreach说法中,哪些是正确的()
- A、foreach是一种更加简洁的for循环,也称增强for循环
- B、foreach可以对List,Set数组进行遍历
- C、foreach的出现,简化了书写
- D、foreach只适合对容器进行遍历操作,不能对元素进行修改
9以下关于foreach说法中,哪些是正确的( )
- A、foreach是一种更加简洁的for循环,也称增强for循环
- B、foreach可以对List,Set数组进行遍历
- C、foreach的出现,简化了书写
- D、foreach只适合对容器进行遍历操作,不能对元素进行修改
答案解析:此类是基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现不是同步的。
11下列选项中,哪些是Properties类的方法( )
答案解析:Properties类中,针对字符串的存取提供了两个专用的方法setProperty()和getProperty()。 Properties类中没有定义 iterator()和 add()方法
答案解析:Properties类中,针对字符串的存取提供了两个专用的方法setProperty()和getProperty()。 Properties类中没有定义 iterator()和 add()方法。
三.填空题(共22题,19.8分)
链表
答案解析:LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。
10ArrayList内部封装了一个长度可变的【】。
数组
答案解析:在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
HashSet
答案解析:向HashSet集合中添加一个对象时,首先会调用该对象的hashCode()方法来确定元素的存储位置,然后再调用对象的equals()方法来确保该位置中没有重复元素。
答案解析:LinkedList集合内部维护了一个双向循环链表,链表中的每一个元素都使用引用的方式来记住它的前一个元素和后一个元素,从而可以将所有的元素彼此连接起来。
public static void main(String[] args) {
Map hashMap = new HashMap();
hashMap.put("传智", "播客");
hashMap.put("务实", "创新");
for(Map.Entry entry:【】){
String key = entry.getKey();
String value = entry.getValue();
System.out.println("Key:"+key+" Value: "+value);
}
}
请补全下划线处代码,使main()方法能够正常运行。
hashMap.entrySet()
答案解析:HashMap类中的entrySet()方法用于返回此映射中所包含的映射关系的Set视图。
四.判断题(共32题,30.7分)
2HashSet是Set接口的一个实现类,它所存储的元素是可重复的,并且元素都是无序的。
答案解析:HashSet所存储的元素是不可重复的。
3泛型方法的定义与其所在的类是否是泛型类是没有任何关系的。
4List集合中不允许出现重复的元素。
5使用HashMap集合迭代出元素的顺序和元素存入的顺序是一致的。
答案解析:HashMap集合迭代出来元素的顺序和存入的顺序是不一致的。如果想要存入顺序和迭代的顺序一致可以使用使用Java中提供的LinkedHashMap类,它是HashMap的子类,和LinkedList一样也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序与存入的顺序一致。
6Properties类表示一个持久的属性集。
7如果使用通配符“?”接收泛型对象,则通配符“?”修饰的对象只能接收,不能修改,也就是不能设置。
8TreeSet是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序。
9HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。
10可以通过Scanner类的nextInt()方法来接受控制台的信息。
11java.util.HashMap可以存储null键和null值。
答案解析:java.util.HashMap可以存储null键和null值。
12java.util.HashMap可以存储null键和null值。
13List集合中不允许出现重复的元素。
14Set接口中元素是无序的。
15Iterator接口是Java集合框架中的成员。
答案解析:Iterator是对collection进行迭代的迭代器,属于集合框架的成员。
16由于LinkedList集合内部维护了一个双向循环链表,所以它的增删比较快,查询比较慢。
答案解析:LinkedList集合对于元素的增删操作具有很高的效率。
17Properties是Hashtable的子类,它主要用于存储字符串类型的键与值。
答案解析:Hashtable类有一个子类Properties在实际应用中非常重要,Properties主要用来存储字符串类型的键和值。
18集合只能存储对象,不能存储基本类型数据。
答案解析:集合类可以存储任意类型的对象,包括基本数据类型的数据,并且长度可变。
19java.util.Iterator接口中的hashNext()方法是用来判断集合中是否存在下一个元素的。
答案解析:hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。
20Java中的foreach循环特性是从JDK5.0版本开始才提供的。
21集合是长度可变的数组。
答案解析:数组只能存储同一数据类型的数据,集合可以存储多种数据类型的数据。
22Properties是Hashtable的子类,它主要用于存储字符串类型的键与值。
答案解析:Hashtable类有一个子类Properties在实际应用中非常重要,Properties主要用来存储字符串类型的键和值。
23Set接口主要有两个实现类,分别是HashSet和TreeSet。
24合理使用泛型可以避免在程序中进行强制类型转换。
答案解析:合理使用泛型可以避免在程序中进行强制类型转换。
25java.util.Iterator接口中的hashNext()方法是用来判断集合中是否存在下一个元素的。
答案解析:hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素。
26Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value。
27集合是长度可变的数组。
答案解析:数组只能存储同一数据类型的数据,集合可以存储多种数据类型的数据。
28LinkedList集合内部维护了一个单向循环链表
答案解析:LinkedList集合内部维护了一个双向循环链表。
29集合只能存储对象,不能存储基本类型数据。
答案解析:集合类可以存储任意类型的对象,包括基本数据类型的数据,并且长度可变。
30Iterator接口是Java集合框架中的成员。
31Set接口中的元素是无序,并且都会以某种规则保证存入的元素不出现重复。
32ArrayList类是线程不安全的。
正确答案:√