Java集合知识测试

合集下载

Java集合面试问题40个「附答案」

Java集合面试问题40个「附答案」

Java集合面试问题40个「附答案」Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。

以下是店铺搜索整理的一份Java集合面试问题40个【附答案】,供参考练习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生网!1.Java集合框架是什么?说出一些集合框架的优点?每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。

随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。

在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。

它还包括在Java并发包中,阻塞接口以及它们的实现。

集合框架的部分优点如下:(1)使用核心集合类降低开发成本,而非实现我们自己的集合类。

(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。

(3)通过使用JDK附带的集合类,可以降低代码维护成本。

(4)复用性和可操作性。

2.集合框架中的泛型有什么优点?Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。

泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。

这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。

泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。

它也给运行时带来好处,因为不会产生类型检查的字节码指令。

3.Java集合框架的基础接口有哪些?Collection为集合层级的根接口。

一个集合代表一组对象,这些对象即为它的元素。

Java平台不提供这个接口任何直接的实现。

Set是一个不能包含重复元素的集合。

这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。

List是一个有序集合,可以包含重复元素。

你可以通过它的索引来访问任何元素。

List更像长度动态变换的数组。

java集合编程练习题及答案

java集合编程练习题及答案

java集合编程练习题及答案题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main{int i=0;forSystem.out.println);}public static int f{ifreturn 1;elsereturn f+f;}}或public class exp2{public static void main{int i=0;math mymath = new math;forSystem.out.println);}}class math{public int f{ifreturn 1;elsereturn f+f;}}题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt,如果能被整除,则表明此数不是素数,反之是素数。

public class exp2{public static void main{int i=0;math mymath = new math;forif==true)System.out.println;}}class math{public int f{ifreturn 1;elsereturn f+f;}public boolean iszhishu{for}if return false; return true; }题目:打印出所有的“水仙花数“,所谓“水仙花数“是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个“水仙花数“,因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

4. Java集合知识测试_B卷

4. Java集合知识测试_B卷

集合部分测试题本套题共40道,前30道为单选,后10道为多选。

单选题2分/题,多选题4分/题。

多选题不全对半分,全对满分。

单选题1.LinkedList类的特点是( )A.查询快B.增删快C.元素不重复D.元素自然排序2.关于迭代器说法错误的是( )A.迭代器是取出集合元素的方式B.迭代器的hasNext()方法返回值是布尔类型C.List集合有特有迭代器D.next()方法将返回集合中的上一个元素3.单列集合的顶层接口是( )A.java.util.MapB.java.util.CollectionC.java.util.ListD.java.util.Set4.实现下列哪个接口,可以启用比较功能( )A.Runnable接口B.Iterator接口C.Serializable接口parator接口5.对于增强for循环说法错误的是( )A.增强for循环可以直接遍历Map集合B.增强for循环可以操作数组C.增强for循环可以操作Collection集合D.增强for循环是JDK1.5版本后出现的6.下面代码运行的结果是( )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.将Map集合中的键存储到Set集合的方法是( )A.entrySet()B.get()C.keySet()D.put()8.ArrayList和Vector的区别说法正确的是( )A.ArrayList是线程安全的,Vector是线程不安全B.ArrayList是线程不安全的,Vector是线程安全的C.ArrayList底层是数组结构,Vector底层是链表结构D.ArrayList底层是链表结构,Vector底层是数组结构9.Set集合的特点是( )A.元素有序B.元素无序,不存储重复元素C.存储重复元素D.Set集合都是线程安全的10.A rrayList的初始化内容如下:ArrayList<String> list = new ArrayList<>();list.add("java");list.add("aaa");list.add("java");list.add("java");list.add("bbb");下面可以删除list中所有的“java”的代码是( )a)for (int i = list.size()-1; i >= 0; i--) { if("java".equals(list.get(i))){list.remove(i);}}b)for (int i =0; i < list.size(); i++) {if("java".equals(list.get(i))){list.remove(i);}}c) list.remove("java");d) list.removeAll("java");11.V ector类的特点是( )A.线程同步B.线程不同步C.增删快D.底层是链表结构12.使用TreeSet的无参构造创建集合对象存储元素时,该元素必须 ( )A.必须实现Comparable接口B.有main方法C.有get和set方法D.必须实现Serializable接口13.下列方法不是Collection通用方法的有( )a) iterator()b) add()c) get(); //list特有d) remove()14.对于HashMap集合说法正确的是( )A.底层是数组结构B.底层是链表结构C.可以存储null值和null键D.不可以存储null值和null键15.C ollections工具类中的binarySearch()方法描述正确的是( )A.binarySearch()方法只能操作Set集合B.binarySearch()方法只能操作List集合C.binarySearch()方法只能操作Map集合D.binarySearch()可以操作所有的集合16.将集合转成数组的方法是( )A.asList()B.toCharArray()C.toArray()D.copy()17.父类声明:public class FXfather<T>{….}现在要定义一个Fxfather的子类son,下面定义错误的是( )a) class Son extends FXfather<String>{}b) class Son<T,V> extends FXfather<T>{}c) class Son<String> extends FXfather<String>{}d) class Son<String> extends FXfather<T>{}18.A rrayList类的底层数据结构是( )A.数组结构B.链表结构C.哈希表结构D.红黑树结构19.应用程序的main方法中有以下语句(请参看API文档)Hashtable hashtable=new Hashtable();hashtable.put("100","aaa");hashtable.put("200","bbb");hashtable.put("300","ccc");System.out.println(hashtable.get("300").toString()+ hashtable.get("200").toString() + hashtable.get("100").toString());则输出的结果是 ( )。

java map集合练习题

java map集合练习题

java map集合练习题Map是Java中一种常见的数据结构,它以键值对的形式存储和管理数据。

通过练习Map集合的使用,可以加深对Java中Map的理解和掌握。

下面将介绍一些Java Map集合的练习题,帮助你巩固所学的知识。

题目一:学生成绩请使用Map集合,存储五位学生的姓名和对应的成绩。

按照成绩从高到低的顺序打印出学生的姓名和成绩。

如果成绩相同,则按照姓名的字典顺序进行排序。

解题思路:1. 创建一个HashMap对象,用于存储学生姓名和成绩。

2. 使用put()方法将五位学生的姓名和成绩添加到Map中。

3. 创建一个TreeMap对象,并实现Comparator接口,重写compare()方法,用于按照成绩和姓名进行排序。

4. 使用putAll()方法将HashMap中的数据按照排序规则添加到TreeMap中。

5. 使用entrySet()方法获取TreeMap中的所有键值对,遍历并打印出学生的姓名和成绩。

```javaimport java.util.HashMap;import parator;import java.util.Map;import java.util.TreeMap;public class StudentScores {public static void main(String[] args) {Map<String, Integer> scores = new HashMap<>();scores.put("Alice", 85);scores.put("Bob", 92);scores.put("Charlie", 78);scores.put("David", 92);scores.put("Eva", 85);Map<String, Integer> sortedScores = new TreeMap<>(new Comparator<String>() {@Overridepublic int compare(String name1, String name2) {int result = scores.get(name2).compareTo(scores.get(name1));if (result == 0) {return pareTo(name2);}return result;}});sortedScores.putAll(scores);for (Map.Entry<String, Integer> entry : sortedScores.entrySet()) { System.out.println("姓名:" + entry.getKey() + ",成绩:" + entry.getValue());}}}```题目二:单词计数请编写一个程序,统计一段英文文本中每个单词出现的次数,并按照出现次数从高到低的顺序打印出来。

java集合试题及答案

java集合试题及答案

java集合试题及答案# Java集合试题及答案1. 选择题- 集合框架中,哪个接口提供了对集合的最小功能定义?- A. List- B. Set- C. Map- D. Collection- 答案:D2. 填空题- 在Java集合框架中,ArrayList是基于______实现的。

- 答案:数组3. 简答题- 描述ArrayList和LinkedList在性能上的主要差异。

- 答案:ArrayList是基于动态数组实现的,因此对于随机访问操作有较好的性能。

LinkedList是基于双向链表实现的,因此对于插入和删除操作有更好的性能。

4. 编程题- 编写一个Java程序,实现一个方法,该方法接受一个ArrayList<Integer>作为参数,并返回一个新的ArrayList<Integer>,其中包含原列表中所有元素的平方。

```javapublic class SquareList {public static ArrayList<Integer>squareList(ArrayList<Integer> input) {ArrayList<Integer> result = new ArrayList<>(); for (int num : input) {result.add(num * num);}return result;}}```5. 判断题- 在Java中,HashMap的键值对是有序的。

- 正确- 错误- 答案:错误6. 多选题- 下列哪些类实现了Map接口?- A. HashMap- B. TreeMap- C. HashSet- D. LinkedHashMap- 答案:A, B, D7. 计算题- 假设有一个ArrayList<String>,包含10个元素,如果使用Collections.sort()方法对其进行排序,排序后第一个元素的索引是多少?- 答案:08. 案例分析题- 给定一个HashSet<String>,包含"apple", "banana", "cherry", "date", "elderberry"五个元素。

JAVA集合试题库完整

JAVA集合试题库完整

集合一、第一模块:知识点讲解图解集合Set HashMap TreeMapLinkedHashMap ArrayList LinkList HashSet TreeSet LinkedHashSet Comparable comparator1、集合的由来:我们学的语言是面向对象的语言,为了方便对多个对象进行操作,我们就必须把对象存储。

而要存储多个对象,就不能是一个基本变量,而应该是一个容器类型的变量。

这样就引入了集合。

*以前接触过得容器:数组、StringBuffer 等由于StringBuffer 的结果是一串字符,不一定能满足我们的要求,所以我们只能选择数组,这就是对象数组。

而对象数组不能适应变化的需求,因为数组的长度是固定。

2、数组和集合的区别①长度区别集合的长度可变数组长度不可变②内容区别集合可以存储不同类型的元素数组存储的是同一种类型的元素③元素的数据类型问题数组可以存储基本数据类型也可以存储引用数据类型集合只能存储引用类型,Java提供了不同的集合类,这多个集合的数据结构不同*数据结构:数据的存储方式Java提供的多种集合类,他们的数据结构不同,但是,他们肯定有共性的内容(存储、获取、判断等)。

通过不断的向上提取,我们就能够得到一个集合的继承体系结构图。

把上面这段话转化为图形的形式:collectionArrayList Vector LinkedList HashSetTreeSet通过这个图可以清楚的理解集合现在我们从最低层开始学习一、Collection(接口Java.util )1、功能:①:添加boolean add(Object obj) 添加一个元素boolean addAll(Collection c)添加一个集合的元素②:删除void clear() 移除所有元素boolean remove(Object obj) 移除一个元素boolean removeAll(Collection c)移除一个集合的元素③:判断boolean cotains(Object o)判断集合中是否包含指定元素boolean containsAll(Collection c)判断集合中是否包含指定集合Collection c1=new ArrayList();c1.add("hello");c1.add("java");ArrayList();"containsAll:"System.out.println(c1);System.out.println(c2);打印结果:containsAll:falsec1[hello, java, world]c2[a, c, world]boolean isEmpty() 判断是否是空④获取Iterator<E> iterator()⑤长度int size()⑥交集功能(了解)boolean retainAll(Collection c)交集两个集合中都有的元素,返回值的意思?假设有两个集合A,B。

java集合练习题(打印版)

java集合练习题(打印版)# Java集合练习题## 一、选择题1. 下列哪个不是Java集合框架中的一部分?A. ArrayListB. LinkedListC. HashMapD. MyCollection2. 在Java中,哪个接口提供了对集合元素的迭代访问?A. CollectionB. IteratorC. ListD. Set3. Java集合框架中的哪个类是线程安全的?A. ArrayListB. LinkedListC. HashMapD. Vector4. 以下哪个方法用于判断一个集合是否包含特定的元素?A. add()B. contains()C. remove()D. size()5. 以下哪个方法用于获取集合中的元素个数?A. add()B. contains()C. remove()D. size()## 二、简答题1. 解释ArrayList和LinkedList的主要区别。

2. 描述HashMap的工作原理。

3. 为什么在Java中使用迭代器遍历集合是安全的?## 三、编程题1. 题目:创建一个ArrayList,添加5个整数元素,并打印出这些元素。

```javaArrayList<Integer> list = new ArrayList<>();// TODO: 添加元素并打印```2. 题目:使用LinkedList实现一个简单的队列,添加3个元素,并按顺序打印出来。

```javaLinkedList<Integer> queue = new LinkedList<>();// TODO: 添加元素并打印```3. 题目:创建一个HashMap,存储学生的名字和分数,然后遍历HashMap并打印每个学生的名字和分数。

```javaHashMap<String, Integer> studentScores = new HashMap<>();// TODO: 添加学生分数并打印```4. 题目:实现一个程序,使用HashSet存储一组整数,然后检查并打印一个给定整数是否在HashSet中。

java集合-练习题

java集合-练习题1. 填空Collection 接⼝的特点是元素是___⽆序可重复______;List 接⼝的特点是元素__有__(有|⽆)顺序,_可以___(可以|不可以)重复;Set 接⼝的特点是元素__⽆___(有|⽆)顺序,____不可以__(可以|不可以)重复;Map 接⼝的特点是元素是__key、value 映射______,其中__value__可以重复,_key___不可以重复。

2. (List)有如下代码import java.util.*;public class TestList{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“World”);list.add(1, “Learn”);list.add(1, “Java”);printList(list);}public static void printList(List list){//1for(int i = 0; i< list.size();i++){System.out.println(list.get(i));}for(Object o : list) {System.out.println(o);}Iterator itor = list.iterator();while(itor.hasNext()){System.out.println(itor.next());}}}要求:1) 把//1 处的代码补充完整,要求输出list 中所有元素的内容2) 写出程序执⾏的结果Hello Java Learn World3) 如果要把实现类由ArrayList 换为LinkedList,应该改哪⾥?ArrayList 和LinkedList 使⽤上有什么区别?实现上有什么区别?4) 如果要把实现类由ArrayList 换为Vector,应该改哪⾥?ArrayList 和Vector 使⽤上有什么区别?实现上有什么区别?3. (List)写出下⾯程序的运⾏结果import java.util.*;public class TestList{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“World”);list.add(“Hello”);list.add(“Learn”);list.remove(“Hello”);list.remove(0);for(int i = 0; iSystem.out.println(list.get(i));}}}结果: Hello Learn4. (Set,List)import java.util.*;public class TestListSet{public static void main(String args[]){List list = new ArrayList();list.add(“Hello”);list.add(“Learn”);list.add(“Hello”);list.add(“Welcome”);Set set = new HashSet();set.addAll(list);System.out.println(set.size());}}选择正确答案 CA.编译不通过B.编译通过,运⾏时异常C.编译运⾏都正常,输出3D.编译运⾏都正常,输出45. (List)已知有⼀个Worker 类如下:public class Worker {private int age;private String name;private double salary;public Worker (){}public Worker (String name, int age, double salary){/doc/e4820cecad51f01dc381f11f.html = name; this.age = age;this.salary = salary;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {/doc/e4820cecad51f01dc381f11f.html = name; }public double getSalary(){return salary;}public void setSalary(double salary){this.salary = salary;}public void work(){System.out.println(name + “ work”);}}完成下⾯的要求1) 创建⼀个List,在List 中增加三个⼯⼈,基本信息如下:姓名年龄⼯资zhang3 18 3000li4 25 3500wang5 22 32002) 在li4 之前插⼊⼀个⼯⼈,信息为:姓名:zhao6,年龄:24,⼯资33003) 删除wang5 的信息4) 利⽤for 循环遍历,打印List 中所有⼯⼈的信息5) 利⽤迭代遍历,对List 中所有的⼯⼈调⽤work ⽅法。

Java集合知识测试

集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。

单选2分/题,多选4分/题。

多选题不全对半分,全对满分。

1.下列选项哪个正确( AC)a)对象数组是引用数据类型b)对象数组是基本数据类型c)对象数组存储的元素是引用数据类型d)对象数组存储的元素是基本数据类型2.下列选项关于集合和数组的区别说法正确的是( A )a)集合的长度是可变的,数组的长度是不可变的b)集合的长度是不可变的,数组的长度是可变的c)集合和数组都能存储基本数据类型和存储引用类型d)集合只能存储基本数据类型,数组既能存储基本类型也能存储引用类型3.Collection获取长度的方法是哪个(B )a)length()b)size()c)add()d)iterator()4.将集合转换成数组的方法是哪个( C)a)toCharArray()b)getBytes()c)toArray()d)size()5.iterator()方法的功能是什么(C )a)获取集合对象b)获取集合的长度c)获取迭代器对象d)获取集合中元素6.下面哪些方式可以避免并发修改异常的发生( ABC )a)用普通for循环和get()遍历集合,增删集合元素b)用列表迭代器遍历集合,使用列表迭代器的add()添加元素c)用普通迭代器遍历集合,使用普通迭代器的remove()删除元素d)没有方法能解决并发修改异常7.下列关于Vector说法正确的是( AD)a)Vector是JDK1.0开始出现的b)Vector是一个抽象类c)Vector是一个接口d)Vector后来被ArrayList取代了,但是某些老项目中还在延续使用8.数组数据结构的特点是什么( AC )a)增删慢b)查询慢c)查询快d)增删快9.下列描述ArrayList集合特点正确的是( BD)a)底层是链表数据结构b)底层是数组数据结构c)是线程安全的d)是线程不安全的10.列描述LinkedList集合特点正确的是( D)a)底层是数组数据结构b)底层是二叉树结构c)是线程安全的d)是线程不安全的11.下列关于ArrayList的contains(Object obj)方法的理解正确的是( AB C )a)底层会调用obj的equals方法b)如果这个方法的返回值是true,就说明集合中含有obj这个元素c)如果这个方法的返回值是false,就说明集合中没有obj这个元素d)这是一个静态方法12.在下列代码中,关于list.remove(new Person(“张三”,23))方法的作用理解正确的是(CD)ArrayList list = new ArrayList();list.add(new Person("张三", 23));list.add(new Person("张三", 23));list.add(new Person("李四", 24));list.remove(new Person("张三", 23));a)代码移除了所有的张三b)如果Person类实现了equals方法,那么就会移除所有张三c)如果Person类实现了equals方法,那么就会移除一个张三d)可能不会移除任何对象13.下列代码list中的元素存储的顺序是(D )LinkedList list = new LinkedList();list.addFirst("a");list.addFirst("b");list.addFirst("c");list.addFirst("d");list.addLast("e");System.out.println(list);a)abcdeb)edcbac)acdbed)dcbae14.Java中,关于队列的的说法正确的是(AD )a)队列的特点是先进先出b)队列的特点是后进先出c)队列的特点是先进后出d)队列的特点是后进后出15.下列有关泛型的代码中,说法正确的是(C) ?ArrayList<Person> list = new ArrayList<Person>();a)list集合里面只能存放Person对象b)list集合里面能存放字符串c)list集合里面能存放Person的子类对象d)list集合里面可以存放Object类型的对象16.下列关于泛型说法不正确的是( B)a)泛型的出现可以把运行时出现的问题提前放到编译时期就发现b)泛型的出现可以把编译时出现的问题放到运行之后就发现c)泛型可以避免强制类型转换d)泛型是一种安全机制17.观察如下代码,下列说法不正确的是(A )public class Tool<Q> {}a)格式错误,因为Q不知道是什么 //泛型 Q可以当做一个已知的类型来使用;b)可以这样创建对象:new Tool<String>();c)去掉Tool上的Q,可以用String来代替d)可以这样创建对象:new Tool<Person>();18.下面泛型方法中,说法正确的是( A )private <T,Q> void show2(T t) {}a)在调用show2方法的时候,才会确定T的类型是什么b)此方法会报错,因为格式不对c)定义格式错误,此方法中<T,Q>应该改为<T>//T后面应该有变量名sd)定义格式错误,参数列表应该改为(T,Q t)19.下列增强for循环的代码中,有关说法正确的是( D )for(int x : arr){System.out.println(x);}a)arr必须是一个int数组b)arr 可以是字符串数组c)arr 必须是一个集合d)arr可以是数组也可以是集合对象20.要遍历元素对象,下面横线处填写的代码应为( BC )ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("b");for( ____________ ){System.out.println(x);}a)int x : listb)Object x : listc)String x : listd)int x=0;x<list.size();x++21.能删除下面集合中所有的字符串“b”的代码的是( C )ArrayList<String> list = new ArrayList<>();list.add("a");list.add("b");list.add("b");list.add("c");list.add("d");a)for(int i = 0; i < list.size(); i++) {if("b".equals(list.get(i))) { //第二个B删不掉list.remove(i);}}b)for(String str : list){if(“b”.equals(str)){list.remove(str); //并发修改一次}}c)for(int i = 0; i < list.size(); i++) {if("b".equals(list.get(i))) {list.remove(i--);}}d)for(String s : list){list.remove(“b”); //并发修改异常s}22.关于可变参数的说法正确的是( ACD )a)可变参数的格式为【数据类型… 变量名】b)可变参数不能打印c)直接打印可变参数,得到的是一个地址值d)可变参数可以传递任意多个同类型对象23.使用HashSet存储对象,如何保证唯一( C)a)重写equals方法b)让要存储的类实现Compartor,重写compare方法c)根据成员变量重写HashCode方法和equals方法d)重写contains方法24.HashSet在创建对象存储元素的时候,以下说法错误的是(D )a)可以使用泛型b)可以存储任意内容c)存储和取出的顺序不同d)存储的元素会按照一定的规则,不会去除重复元素25.HashSet中常见的方法有( D )a)a dd,remove.get,size//没有get方法是在LIST里面才有sb)get(int pos)c)insert()d)add,remove,size26.根据下面的代码,选出空白处应填写的代码表示存储1-20的随机数( A )HashSet<Integer> hs = new HashSet<Integer>();Random r = new Random();while(hs.size() < 10) {补全此处代码hs.add(num);}for (Integer integer : hs) {System.out.println(integer);}a)i nt num = r.nextInt(20) + 1;b)int num = r.nextInt(20) ;c)Math.random();d)Math.random(20)+1;27.根据下面的代码,选出空白处应填写的代码(A )Scanner sc = new Scanner(System.in);System.out.println("请输入一行字符串:");String line = 补全此处代码;char[] arr = line.toCharArray();HashSet<Character> hs = new HashSet<>();for(char c : arr) {hs.add(c); }for (Character ch : hs) {System.out.println(ch);}a)S tring line = sc.nextLine();b)String line = sc.newLine();c)String line = sc.readLine();d)String line = sc.getString();28.TreeSet底层实际的操作对象是( A)a)TreeMapb)HashMapc)LinkedHashMapd)LinkedTreeMap29.下面的方法,目的是在TreeSet中对元素进行排序,但是要保留重复元素,补全下面的代码( A )public static void sort(List<String> list) {TreeSet<String> ts = new TreeSet<>(new Comparator<String>() {@Overridepublic int compare(String s1, String s2) {int num = pareTo(s2);补全此处代码}});ts.addAll(list);list.clear();list.addAll(ts);a)return num == 0 ? 1 : num;b)return num == 1 ? 0 : num;c)return num == 1;d)return num;30.比较器必须实现以下哪个接口( A )?a)Comparatorb)Comparablec)Collectiond)Map31.关于Map集合的描述,以下说法错误的是(D)?a)Map集合是双列集合b)Map集合的数据结构只针对键有效c)Map集合的键是不可以重复的d)以上都不对32.往Map集合中添加元素,可以通过以下那个方法(A)a)pu t(K key,V value)b)add(K key,V value)c)keySet(K key,V value)d)containsKey(Object key)33.Map集合中,获取所有键的集合,是以下哪个方法(C)a)r emove()b)entrySet()c)keySet()d)keys()34.Itetator迭代器中的hasNext()方法的作用是(A)a)判断集合中是否还有下一个元素b)判断集合中是否还有上一个元素c)获取集合中的下一个元素d)获取集合中的上一个元素35.Map集合中,获取所有键值对的集合是那个方法(A)a)entrySet()b)values()c)keySet()d)keyValues()36.应用程序的main方法中有以下语句(请参看API文档)Hashtable hashtable=new Hashtable();hashtable.put("100","aaa");hashtable.put("200","bbb");hashtable.put("300","ccc");System.out.println(hashtable.get("300").toString()+ hashtable.get("200").toString()+ hashtable.get("100").toString());则输出的结果是 ( D )?a)编译失败b)bbbc)cccd)cccbbbaaa37.TreeMap通过自然排序保证元素的唯一性,必须重写哪个方法(B )a)equals()b)compareTo()c)compare()d)toString()38.TreeMap通过比较器接口,保证元素唯一性,必须重写哪个方法(C)?a)equals()b)compareTo()c)compare()d)toString()39.使用TreeSet的无参构造创建集合对象存储元素时,该元素必须(B)a)有main方法b)必须实现Comparable接口c)有get和set方法d)必须实现Serializable接口40.Collections工具类中的binarySearch()方法描述正确的是(D )a)binarySearch()方法只能操作Set集合b)binarySearch()方法可以操作所有的集合c)binarySearch()方法只能操作Map集合d)binarySearch()方法只能操作List集合 //要求有序的list. Set 是无序的不行. Map无法进行二分查找s。

Java面试题总结-Java集合篇(附答案)

Java⾯试题总结-Java集合篇(附答案)⽬录⼀、Java 容器都有哪些?1、Collection(1)setHashSet、TreeSet(2)listArrayList、LinkedList、Vector2、MapHashMap、HashTable、TreeMap⼆、Collection 和 Collections 有什么区别?1、Collection是最基本的集合接⼝,Collection派⽣了两个⼦接⼝list和set,分别定义了两种不同的存储⽅式。

2、Collections是⼀个包装类,它包含各种有关集合操作的静态⽅法(对集合的搜索、排序、线程安全化等)。

此类不能实例化,就像⼀个⼯具类,服务于Collection框架。

三、list与Set区别1、List简介实际上有两种List:⼀种是基本的ArrayList,其优点在于随机访问元素,另⼀种是LinkedList,它并不是为快速随机访问设计的,⽽是快速的插⼊或删除。

ArrayList:由数组实现的List。

允许对元素进⾏快速随机访问,但是向List中间插⼊与移除元素的速度很慢。

LinkedList :对顺序访问进⾏了优化,向List中间插⼊与删除的开销并不⼤。

随机访问则相对较慢。

还具有下列⽅ 法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 这些⽅法 (没有在任何接⼝或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使⽤。

2、Set简介Set具有与Collection完全⼀样的接⼝,因此没有任何额外的功能。

实际上Set就是Collection,只是⾏为不同。

这是继承与多态思想的典型应⽤:表现不同的⾏为。

Set不保存重复的元素(⾄于如何判断元素相同则较为负责)Set : 存⼊Set的每个元素都必须是唯⼀的,因为Set不保存重复元素。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。

单选2分/题,多选4分/题。

多选题不全对半分,全对满分。

1.单列集合的顶层接口是( B )a)java.util.Mapb)java.util.Collectionc)java.util.Listd)java.util.Set2.ArrayList类的底层数据结构是( A )a)数组结构b)链表结构c)哈希表结构d)红黑树结构3.LinkedList类的特点是( B )a)查询快b)增删快c)元素不重复d)元素自然排序4.Vector类的特点是( A )a)线程同步b)线程不同步c)增删快d)底层是链表结构5.关于迭代器说法错误的是( D )a)迭代器是取出集合元素的方式b)迭代器的hasNext()方法返回值是布尔类型c)List集合有特有迭代器d)next()方法将返回集合中的上一个元素.6.在我们所学知识中,下面哪几项是接口( ABCD )a) java.util.Mapb) java.util.Collectionc) java.util.Listd) java.util.Set7.实现下列哪个接口,可以启用比较功能( D )a)Runnable接口b)Iterator接口c)Serializable接口d)Comparator接口8.下面代码运行的结果是( A )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];9.按照课堂要求重写equals和hashCode后,下面关于这两个方法说法正确的是( BC )a) 两个对象的hashCode值相同,那么他们调用equals()方法返回值一定为trueb) 两个对象的hashCode值相同,那么他们调用equals()方法返回值可以为falsec) hashCode值一般与对象的成员变量有关d) 只要重写equals方法,就一定要重写hashCode方法10.将Map集合中的键存储到Set集合的方法是( C )a)entrySet()b)get()c)keySet()d)put()11.J ava中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是(ABD )a) ArrayList和LinkedList均实现了List接口b) ArrayList的查询速度比LinkedList快c) 添加和删除元素时,ArrayList的表现更佳d) HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值12.A rrayList和Vector的区别说法正确的是(B )a)ArrayList是线程安全的,Vector是线程不安全b)ArrayList是线程不安全的,Vector是线程安全的c)ArrayList底层是数组结构,Vector底层是链表结构d)ArrayList底层是链表结构,Vector底层是数组结构13.A rrayList的初始化内容如下:ArrayList<String> list = new ArrayList<>();list.add("java");list.add("aaa");list.add("java");list.add("java");list.add("bbb");下面可以删除list中所有的“java”的代码是( A )a)for (int i = list.size()-1; i >= 0; i--) {if("java".equals(list.get(i))){list.remove(i);}}b)for (int i =0; i < list.size(); i++) {if("java".equals(list.get(i))){list.remove(i);}}c) list.remove("java");d) list.removeAll("java");14.使用TreeSet的无参构造创建集合对象存储元素时,该元素必须 ( A )a)实现Comparable接口b)有main方法c)有get和set方法d)实现Serializable接口15.将集合转成数组的方法是( C )a)asList()b)toCharArray()c)toArray()d)copy()16.下面关于HashMap和Hashtable的区别,说法正确的是( CD )a) Hashtable线程不安全,效率高b) HashMap线程安全,效率低c) HashMap允许null键和值d) Hashtable不允许null键和值17.对于增强for循环说法错误的是( A )a)增强for循环可以直接遍历Map集合b)增强for循环可以操作数组c)增强for循环可以操作Collection集合d)增强for循环是JDK1.5版本后出现的18.下面的代码用于输出字符数组ch中每个字符出现的次数public static void main(String[] args) {char[] ch = { 'a', 'c', 'a', 'b', 'c', 'b' };HashMap map = new HashMap();for (int i = 0; i < ch.length; i++) {//位置①}System.out.println(map);}应该填入位置①的代码是,不允许使用工具运行程序( C ) CDa)if (map.contains(ch[i])) {map.put(ch[i], map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}b)if (map.contains(ch[i])) {map.put(ch[i], (Integer) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}c)if (map.containsKey(ch[i])) {map.put(ch[i], (int) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}d)if (map.containsKey(ch[i])) {map.put(ch[i], (Integer) map.get(ch[i]) + 1);} else {map.put(ch[i], 1);}19.对于HashMap集合说法正确的是(C )a)底层是数组结构b)底层是链表结构c)可以存储null值和null键d)不可以存储null值和null键20.C ollections工具类中的binarySearch()方法描述正确的是( A ) Ba)binarySearch()方法只能操作Set集合b)binarySearch()方法只能操作List集合c)binarySearch()方法只能操作Map集合d)binarySearch()可以操作所有的集合21.下面代码的运行结果是( C ) DArrayList al = new ArrayList();al.add(“a”);al.add(“b”);al.add(“c”);Iterator it = al.iterator();while(it.hasNext()){String s = (String)it.next();if(s.equals(“c”)){al.add(“c1”);}}System.out.println(al);a)[a,b,c]b)[c1]c)[a,b,c,c1]d)抛出ConcurrentModificationException异常22.关于Map.Entry接口说法错误的是( C )a)具有getkey()方法b)具有getValue()方法c)具有keySet()方法d)具有setValue( )方法23.题示代码的功能为:循环遍历输出Map当中的每一个元素Map map=new HashMap();map.put(“jessica”,100);map.put(“tom”,200);map.put(“den”,300);Set 位置① set = 位置②;for ( 位置③ per : set) {System.out.println(per.getKey() + ":" + per.getValue());}下列每个选项中分别填入上面三个位置,正确的是 Da) <Entry>map.keySet()Entryb) <Entry<Integer,String >>map.entrySet()Entryc) <Map.Entry<String, Integer>>map.keySet()Map.Entryd) <Map.Entry<String, Integer>>map.entrySet()Map.Entry24.S et集合的特点是( B )a)元素有序b)元素无序,不存储重复元素c)存储重复元素d)Set集合都是线程安全的25.关于将int数组使用系统提供的API转成集合后,不可以进行的操作是( B )Aa)增加集合中的元素b)迭代集合c)修改集合中的元素d)获取集合中元素的个数26.下面代码运行的结果是( B )ArrayList<String> al = new ArrayList<>();al.add("s");al.add("ddd");al.add("true");System.out.println(al);a)编译失败b)[s,ddd,true]c)[true]d)运行报错27.关于HashMap集合说法正确的是( AB )a)HashMap集合是双列集合b)HashMap集合不允许存储重复键c)HashMap集合不允许存储重复值d)HashMap集合线程是安全的28.L ist集合的遍历方式有如下哪几种 ( ABC )a)Iterator迭代器实现 //开发使用这种方法b)增强for循环实现c) get()和size()方法结合实现d)get()和length()方法结合实现29.下面类或者接口中,不属于集合体系的是( AD )Aa) java.util.Collectionsb) java.util.Mapc) java.util.Vectord) java.util.Hashtable30.下面的类是同步的有( BD )。

相关文档
最新文档