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

2018/03/06 20:55
阅读数 18

一、单选题 1.ArrayList类的底层数据结构是(<font color="#00FFFF"> A</font> ) A、数组结构 B、链表结构 C、哈希表结构 D、红黑树结构

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

2.LinkedList类的特点是<font color="#00FFFF">(B</font> ) A、查询快 B、增删快
C、元素不重复 D、元素自然排序

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

3.Vector类的特点是( <font color="#00FFFF">A </font>) A、线程同步 B、线程不同步 C、增删快 D、底层是链表结构

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

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

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

5.实现下列哪个接口,可以启用比较功能( <font color="#00FFFF"> D </font> ) A、Runnable接口 B、Iterator接口 C、Serializable接口 D、Comparator接口 解析:

6.下面代码运行的结果是( <font color="#00FFFF"> A </font> ) ArrayList<String> al = new ArrayList<String>(); 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的区别说法正确的是(<font color="#00FFFF"> B </font> ) A、ArrayList是线程安全的,Vector是线程不安全 B、ArrayList是线程不安全的,Vector是线程安全的 C、ArrayList底层是数组结构,Vector底层是链表结构 D、ArrayList底层是链表结构,Vector底层是数组结构

8.对于HashMap集合说法正确的是( <font color="#00FFFF"> C </font> ) A、底层是数组结构 B、底层是链表结构 C、可以存储null值和null键 D、不可以存储null值和null键

9.下面类或者接口中,不属于集合体系的是( <font color="#00FFFF">A </font> ) A、java.util.Collections B、java.util.Map C、java.util.Vector D、java.util.Hashtable

10.以下能以键_值对的方式存储对象的接口是( <font color="#00FFFF">B </font> ) A、java.util.Collection B、java.util.Map C、java.util.HashMap D、java.util.Set

11.在Java中,(<font color="#00FFFF"> A</font> )类可用于创建链表数据结构的对象。 A、LinkedList B、ArrayList C、Collection D、HashMap

12.题示代码的功能为:对于一个存放Person对象的ArrayList进行循 环遍历。并输出每个Person对象的idCard和userName。 ( <font color="#00FFFF">D</font> ) public class Person{ private Long idCard; pirvate String userName; //以下是getter和setter方法 //省略 } List<Person> 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.将集合转成数组的方法是(<font color="#00FFFF"> C </font> ) A、asList()
B、toCharArray() C、toArray() D、copy()

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

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

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

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

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

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

20.关于HashMap集合说法正确的是(<font color="#00FFFF"> B </font> ) A、HashMap集合是单列集合 B、HashMap集合不允许存储重复键 C、HashMap集合不允许存储重复值 D、HashMap集合线程是安全的

二、多选题 1.在我们所学知识中,下面哪几项是接口( <font color="#00FFFF"> ABCD </font> ) A.java.util.Map B.java.util.Collection C.java.util.List D.java.util.Set

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

3.下面关于HashMap和Hashtable的区别,说法正确的是( <font color="#00FFFF">CD</font> ) A.Hashtable线程不安全,效率高 B.HashMap线程安全,效率低 C.HashMap允许null键和值 D.Hashtable不允许null键和值

4.关于HashMap集合说法正确的是( <font color="#00FFFF"> AB </font> ) A.HashMap集合是双列集合 B.HashMap集合不允许存储重复键 C.HashMap集合不允许存储重复值 D.HashMap集合线程是安全的

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

6.下面集合中属于线程安全的类是(<font color="#00FFFF"> BD </font>) A.ArrayList B.Vector C.HashMap D.Hashtable

7.以下哪些继承自 Collection 接口( <font color="#00FFFF"> AB </font> ) A、List B、Set C、Map D、Array

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

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部