Java集合知识测试
- 格式:doc
- 大小:66.00 KB
- 文档页数:10
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集合编程练习题及答案题目:古典问题:有一对兔子,从出生后第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个数,每个数分解出个位,十位,百位。
集合部分测试题本套题共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集合练习题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集合试题及答案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"五个元素。
集合一、第一模块:知识点讲解图解集合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集合练习题## 一、选择题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集合-练习题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 ⽅法。
集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共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 容器都有哪些?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不保存重复元素。
Java集合面试问题40个「附答案」每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。
随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。
在保证线程平安的情况下使用泛型和并发集合类,Java已经经历了很久。
它还包括在Java并发包中,阻塞接口以及它们的实现。
集合框架的部分优点如下:(1)使用核心集合类降低开发本钱,而非实现我们自己的集合类。
(2)随着使用经过严格测试的集合框架类,代码质量会得到提高。
(3)通过使用JDK附带的集合类,可以降低代码维护本钱。
(4)复用性和可操作性。
Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。
泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。
这防止了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。
泛型也使得代码整洁,我们不需要使用显式转换和instanceOf 操作符。
它也给运行时带来好处,因为不会产生类型检查的字节码指令。
Collection为集合层级的根接口。
一个集合代表一组对象,这些对象即为它的元素。
Java平台不提供这个接口任何直接的实现。
Set是一个不能包含重复元素的集合。
这个接口对数学集合抽象进展建模,被用来代表集合,就如一副牌。
List是一个有序集合,可以包含重复元素。
你可以通过它的索引来访问任何元素。
List更像长度动态变换的数组。
Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。
一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。
Collection接口指定一组对象,对象即为它的元素。
如何维护这些元素由Collection的详细实现决定。
java 集合练习题在Java编程中,集合(Collection)是非常重要的数据结构,用于存储一组对象。
它们提供了许多有用的方法和功能,可以帮助我们有效地操作和管理数据。
本文将介绍一些Java集合的练习题,旨在帮助读者加深对集合的理解和应用。
练习题一:集合的创建和初始化请编写Java代码,实现以下功能:1. 创建一个ArrayList集合,用于存储整型数据。
2. 初始化这个ArrayList,使其包含以下元素:[1, 3, 5, 7, 9]。
3. 遍历ArrayList,将每个元素打印到控制台。
解答:```javaimport java.util.ArrayList;public class ArrayListExercise {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(3);numbers.add(5);numbers.add(7);numbers.add(9);for (int number : numbers) {System.out.println(number);}}}```练习题二:集合的添加和删除元素请编写Java代码,实现以下功能:1. 创建一个HashSet集合,用于存储字符串数据。
2. 初始化这个HashSet,使其包含以下元素:["apple", "banana", "orange"]。
3. 向HashSet中添加新元素:"grape"。
4. 从HashSet中删除元素:"banana"。
5. 遍历HashSet,将每个元素打印到控制台。
解答:```javaimport java.util.HashSet;public class HashSetExercise {public static void main(String[] args) {HashSet<String> fruits = new HashSet<>();fruits.add("apple");fruits.add("banana");fruits.add("orange");fruits.add("grape");fruits.remove("banana");for (String fruit : fruits) {System.out.println(fruit);}}}```练习题三:集合的查找和排序请编写Java代码,实现以下功能:1. 创建一个LinkedList集合,用于存储字符串数据。
1. 什么是Java集合?
2. Java集合框架有哪些核心接口?
3. ArrayList和LinkedList之间有什么区别?
4. HashSet和TreeSet之间有什么区别?
5. HashMap和Hashtable之间有什么区别?
6. 如何遍历ArrayList?
7. 如何遍历HashMap?
8. 如何在ArrayList中添加元素?
9. 如何在HashMap中添加键值对?
10. 如何从ArrayList中移除元素?
11. 如何从HashMap中移除键值对?
12. 如何判断集合是否为空?
13. 如何获取集合的大小?
14. 如何查找ArrayList中的元素?
15. 如何查找HashMap中的值?
16. 如何将ArrayList转换为数组?
17. 如何将数组转换为ArrayList?
18. 如何对ArrayList进行排序?
19. 如何对HashMap进行排序?
20. 如何使用迭代器遍历集合?
21. 如何使用foreach循环遍历集合?
22. 如何使用Lambda表达式遍历集合?
23. 什么是迭代器的fail-fast机制?
24. 如何实现自定义的可排序的集合类?
25. 什么是同步集合?如何使用它们?
26. 如何实现线程安全的集合?
27. 什么是并发集合?如何使用它们?
28. 如何比较两个集合是否相等?
29. 如何复制一个集合?
30. 如何将集合转换为字符串?
希望这些题目能够帮助你进行Java集合的考试准备!如果还有其他问题,请随时提问。
40个Java集合类面试题和答案详解Java集合框架为Java编程语言的基础,也是Java面试中很重要的一个知识点。
这里,我列出了一些关于Java集合的重要问题和答案。
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更像长度动态变换的数组。
Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。
java考试试题及答案一、选择题(每题2分,共20分)1. 下列哪个是Java的基本数据类型?A. StringB. IntegerC. intD. Object答案:C2. Java中的main方法是程序的入口点,它属于哪个类?A. ng.ObjectB. ng.SystemC. ng.RuntimeD. java.applet.Applet答案:A3. 下列哪个关键字用于定义类?A. classB. publicC. staticD. void答案:A4. Java中的哪个关键字用于实现接口?A. implementsB. extendsC. classD. interface答案:A5. 下列哪个是Java集合框架中的接口?A. ArrayListB. ListC. LinkedListD. HashMap答案:B6. 下列哪个不是Java的控制流语句?A. ifB. forC. switchD. while答案:C7. Java中的哪个类提供了日期和时间的处理功能?A. java.util.DateB. java.util.CalendarC. java.time.LocalDateD. java.time.LocalDateTime答案:B8. 下列哪个是Java的异常处理关键字?A. tryB. catchC. finallyD. all of the above答案:D9. 下列哪个不是Java的访问修饰符?A. publicB. privateC. protectedD. global答案:D10. 下列哪个不是Java的注释方式?A. // 单行注释B. /* 多行注释 */C. / 文档注释 */D. # 预处理指令答案:D二、填空题(每空2分,共20分)1. Java语言是________面向对象的编程语言。
答案:完全2. Java程序的执行流程是:编写源代码,编译成字节码,通过________加载并执行。
1、你知道的List 都有哪些?ArrayList、LinkedList、Vector 等。
2、List 和Vector 有什么区别?Vector 是List 接口下线程安全的集合。
3、List 是有序的吗?List 是有序的。
4、ArrayList 和LinkedList 的区别?分别用在什么场景?ArrayList 和LinkedList 数据结构不一样,前者用在查询较多的场合,后者适用于插入较多的场合。
5、ArrayList 和LinkedList 的底层数据结构是什么?ArrayList 使用的是数组结构,LinkedList 使用的是链表结构。
6、ArrayList 默认大小是多少,是如何扩容的?Jdk1.7 之前ArrayList 默认大小是10,JDK1.7 之后是0,JDK 差异,每次约按1.5 倍扩容。
7、List 是线程安全的吗?如果要线程安全要怎么做?List 中的Vector 才是线程安全的,其他要实现线程安全使用工具类Collections.synchronizedList(new ArrayList())方法。
8、怎么给List 排序?使用List 自身的sort 方法,或者使用Collections.sort(list)方法;9、Arrays.asList 方法后的List 可以扩容吗?Arrays.asList 使用的是final 数组,并且不支持add 方法,不支持扩容。
10、List 和Array 之间如何互相转换?List>Array 使用toArray 方法,Array>List 使用Arrays.asList(array)方法,由于它是固定的,不固定的可以使用new ArrayList(Arrays.asList(array))。
更多关注Java大后端公众号。
java集合类面试题在面试中,Java集合类常常是面试官重点考察的内容之一。
掌握Java集合类的使用方法和底层原理,对于求职者而言是非常关键的。
下面将介绍一些常见的Java集合类面试题及其答案,帮助您更好地准备面试。
1. ArrayList和LinkedList的区别是什么?ArrayList和LinkedList是常用的两种List接口的实现类。
它们的最大区别在于底层实现方式和性能表现。
ArrayList基于动态数组实现,支持随机访问,因此适用于频繁访问的场景。
LinkedList则基于双向链表实现,插入和删除元素的性能较好,适用于频繁插入和删除的场景。
2. HashSet和TreeSet有何区别?HashSet和TreeSet是Set接口的两种实现类,用于存储不重复的元素。
HashSet通过哈希表实现,元素无序且唯一;TreeSet则基于红黑树实现,元素有序且唯一。
因此,HashSet的插入和查找性能较好,而TreeSet在插入和查找时会进行排序,因此插入和查找的性能较慢,但可以获得有序的输出结果。
3. HashMap和HashTable有何区别?HashMap和HashTable都是常用的Map接口的实现类,用于存储键值对。
它们的主要区别在于线程安全性和空键(null key)的处理。
HashMap是非线程安全的,支持空键;而HashTable是线程安全的,不支持空键。
在性能方面,HashMap通常比HashTable更优。
4. ConcurrentHashMap和HashMap有何区别?ConcurrentHashMap是线程安全的HashMap的替代品,适用于并发环境下的高并发访问场景。
相比于HashMap,ConcurrentHashMap使用了分段锁(Segment),在保持线程安全的同时,允许多个线程同时进行读操作,大大提高了并发性能。
5. Iterator和ListIterator的区别是什么?Iterator和ListIterator都是用于遍历集合类的迭代器。
单选题:(每道题目2分)1.下面哪个不是集合和数组的区别?A:集合长度可变B:集合只能存储引用数据类型C:集合只能存储一种引用数据类型D:集合可以存储不同引用数据类型2.Collection中contains()方法的作用是?A:往集合中添加元素B:从集合中删除元素C:判断元素在集合中是否存在D:判断集合是否为空3.下面关于迭代器,说法错误的是?A:专门用于遍历数组B:专门用于遍历集合C:依赖于集合而存在D:内部类的方式实现4.List集合元素的特点是?A:元素有序B:元素无序C:元素不可重复D:元素自然排序5.List集合的get()方法的作用是?A:获取第一个位置的元素B:获取最后一个位置的元素C:获取指定位置的元素D:获取中间位置的元素6.ConcurrentModificationException是什么东西?A:空指针异常B:访问越界异常C:类型转换异常D:并发修改异常7.下面哪个不属于常见的数据结构?A:栈B:队列C:链表D:圆8.ArrayList集合的底层数据结构是?A:数组B:链表C:哈希表D:红黑树9.下面哪个不是Vector的特有功能?A:addElement()B:add()C:elementAt()D:elements()10.Vector集合的特点是?A:线程同步B:线程不同步C:增删快D:底层结构是链表11.LinkedList集合的特点是?A:查询快B:增删快C:元素唯一D:元素按比较器排序12.下面代码运行的结果是?ArrayList<String> al = new ArrayList<String>();al.add(true);al.add(123);al.add("abc");System.out.println(al);A:编译失败B:[true,123,abc]C:[true,123]D:[abc]13.ArrayList集合和Vector集合的区别说法正确的是?A:ArrayList是线程安全的,Vector是线程不安全的B:ArrayList是线程不安全的,Vector是线程安全的C:ArrayList底层结构是数组,Vector底层结构是链表D:ArrayList底层结构是链表,Vector底层结构是数组14.下面代码运行的结果是?ArrayList 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:编译失败B:[a,b,c]C:[a,b,c,c1]D:抛出ConcurrentModificationException异常15.Set集合的特点是?A:元素有序B:元素无序C:元素可重复D:元素从大到小排序16.有关HashSet集合的说法正确的是?A:底层数据结构是链表B:底层数据结构是数组C:元素是重复的D:保证元素的唯一性依赖于hashCode()和equals()17.有关TreeSet集合的说法错误的是?A:底层数据结构是红黑树B:元素可重复C:可以通过自然排序对元素进行排序D:可以通过比较器排序对元素进行排序18.有关Map集合说法错误的是?A:Map集合由键值对组成B:Map集合的键可重复C:Map集合的值可重复D:Map集合不是Collection集合的子体系19.下面关于HashMap说法正确的是?A:底层数据结构是链表B:底层数据结构是数组C:可以允许null键和null值D:不允许null键和null值20. LinkedHashMap集合的底层数据结构是?A:数组B:栈C:红黑树D:链表和哈希表多选题:(每道题目3分)21.下面哪些方法是ArrayList和LinkedList都有的?A:add()B:addFirst()C:get()D:iterator()22.以下有关增强for的说法正确的是?A:增强for是JDK5的新特性B:增强for可以直接遍历数组C:增强for可以直接遍历Map集合D:增强for可以直接遍历Collection集合23.下面关于泛型的说法正确的是?A:泛型是JDK5的新特性B:泛型增强了程序的安全性C:泛型避免了强制类型转换D:泛型要求必须强制类型转换24.ArrayList集合可以通过下面哪些方式进行遍历A:Iterator迭代器实现B:增强for实现C:get()和length()方法结合实现D:get()和size()方法结合实现25.Map集合可以通过哪些方式进行遍历?A:直接通过迭代器即可B:根据键找值的方式C:根据for循环直接遍历D:根据键值对对象找键和值的方式简答题目:(每道题目3分)26:ArrayList,Vector以及LinkedList的特点?ArrayList:底层数据结构是数组,查询快,增删慢线程不安全,效率高Vector:底层数据结构是数组,查询快,增删慢线程安全,效率低LinkedList:底层数据结构是链表,查询慢,增删快线程不安全,效率高27:HashMap和Hashtable的区别?A:HashMap 线程不安全,效率高。
java集合类面试题Java集合类是在Java语言中用于存储和操作多个对象的一种数据结构。
在Java的面试中,经常会涉及到与集合类相关的问题。
本文将介绍一些常见的Java集合类面试题,并提供详细的解答,帮助读者更好地掌握相关知识。
1. ArrayList和LinkedList有什么区别?ArrayList和LinkedList都是Java集合框架中的List接口的实现类,它们都可以用来存储一组有序的对象。
它们的区别在于底层的数据结构和性能表现。
ArrayList底层使用数组实现,支持随机访问,即通过索引快速访问任意位置上的元素。
但在插入和删除元素时,需要移动其他元素来保持有序。
LinkedList底层使用链表实现,支持快速插入和删除操作,但不支持随机访问。
在访问特定位置上的元素时,需要从链表头部或尾部开始遍历。
2. HashSet和TreeSet有什么区别?HashSet和TreeSet都是Java集合框架中的Set接口的实现类,它们都可以用来存储一组无序的、不重复的对象。
它们的区别在于底层的数据结构和元素的排序方式。
HashSet底层使用哈希表实现,将元素存储在哈希桶中,具有很快的插入、删除和查找操作。
元素的顺序是无序的,取决于哈希值的分布情况。
TreeSet底层使用红黑树实现,对元素进行排序并保持有序状态。
在插入、删除和查找操作上比HashSet要慢一些,但支持有序的遍历。
3. HashMap和Hashtable有什么区别?HashMap和Hashtable都是Java集合框架中的Map接口的实现类,它们都用于存储一组键值对。
它们的区别在于线程安全性和处理空键空值的方式。
HashMap非线程安全,效率较高,允许空键和空值。
在多线程环境下使用HashMap时,需要进行外部同步处理。
Hashtable是线程安全的,效率较低,不允许空键和空值。
在多线程环境下使用Hashtable时,不需要进行额外的同步处理。
集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共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 )。