Java集合知识测试

合集下载

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集合框架面试题

程序员集合框架面试题集合框架面试题集合框架是最常被问到的面试问题,要理解技术强大特性,就有必要掌握集合框架。

下面就由小编为大家介绍一下程序员集合框架面试题的文章,欢迎阅读。

程序员集合框架面试题篇11、什么是集合集合框架是用来表示和操作集合的统一框架,它包含接口、实现类、以与帮助程序员完成一些编程的算法。

简言之,在上层完成以下几件事:● 编程更加省力,提高城程序速度和代码质量● 非关联的提高互操作性● 节省学习使用新成本● 节省设计新的时间● 鼓励、促进软件重用具体来说,有6个集合接口,最基本的是接口,由三个接口、、继承,另外两个接口是、,这两个接口不继承,表示映射而不是真正的集合。

2、什么是一些集合类提供了内容遍历的功能,通过接口。

这些接口允许遍历对象的集合。

依次操作每个元素对象。

当使用时,在获得的时候包含一个集合快照。

通常在遍历一个的时候不建议修改集合本省。

3、与有什么区别?:只能正向遍历集合,适用于获取移除元素。

:继承,可以双向列表的遍历,同样支持元素的修改。

程序员集合框架面试题篇21、什么是和?是接口,集合框架中一部分,用于存储键值对,是用哈希算法实现的类。

2、与有什么区别?对比两者都是用方式获取数据。

是原始集合类之一(也称作遗留类)。

作为新集合框架的一部分在2的1.2版本中加入。

它们之间有一下区别:● 和大致是等同的,除了非同步和空值(允许值作为和,而不可以)。

● 没法保证映射的顺序一直不变,但是作为的子类,如果想要预知的顺序迭代(默认按照插入顺序),你可以很轻易的置换为,如果使用就没那么容易了。

● 不是同步的,而是同步的。

● 迭代采用快速失败机制,而不是,所以这是设计的考虑点。

3、在上下文中同步是什么意思?同步意味着在一个时间点只能有一个线程可以修改哈希表,任何线程在执行的更新操作前需要获取对象锁,其他线程等待锁的释放。

4、什么叫做快速失败特性从高级别层次来说快速失败是一个系统或软件对于其故障做出的响应。

Java集合练习及面试题

Java集合练习及面试题

章节练习题及面试题Collection 和Collections的区别答:Collection是集合类的上级接口,继承于他的接口主要有Set 和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别答:Set里的元素是不能重复的,用equals()方法判读两个Set是否相等equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值List, Set, Map是否继承自Collection接口答:List,Set是,Map不是两个对象值相同(x.equals(y) == true),但却可有不同的hash cod e,这句话对不对答:不对,有相同的hash code说出ArrayList,Vector, LinkedList的存储性能和特性答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

HashMap和Hashtable的区别答:1.HashMap与Hashtable都实现了Map接口。

由于HashMap的非线程安全性,效率上可能高于Hashtable。

Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步。

java集合 编程题

java集合 编程题

发展中医药的口号1. 传承中医经典,弘扬中华医药2. 发展中医药,造福人类健康3. 中医药传统与现代融合,为健康保驾护航4. 中医药治未病,健康从根源开始5. 强身健体,中医药助力6. 中医药智慧,健康人生7. 保健康需中医,中医药传承千年8. 中医药调理身心,健康更多光彩9. 传承中医智慧,造福世界人民10. 弘扬传统医学,促进全民健康11. 中医药,健康管理新选择12. 中医药传承千年,健康路上必备13. 融合中医药,创造健康新生活14. 中医药保健,让生活更精彩15. 古训今用,中医药助力健康16. 中医药养生,远离疾病困扰17. 中医药强身健体,提升生活品质18. 中医药传统,健康新动力19. 中医药养生艺术,健康无限可能20. 中医药康复,病痛不再困扰21. 传承千年智慧,中医药助力健康生活22. 中医药调理身心,健康自在心间23. 中医药,守护生命之源24. 传统医药,追求健康之道25. 融合中西医治疗,中医药更有效26. 中医药治未病,健康更美好27. 强身健体,中医药助力28. 中医药防治疾病,健康无忧29. 中医药调理体质,健康生活新境界30. 中医药传承千年,健康之源31. 传统医药智慧,健康生活指导32. 中医药养生之道,健康生活新风尚33. 传承中医药文化,弘扬中华医药精髓34. 中医药,健康守护神35. 古法治疗新疾,中医药助力全民健康36. 中医药智慧,彰显健康之道37. 传统医学智慧,中医药引领健康新风尚38. 中医养生,谱写健康乐章39. 弘扬中医药传统,助力健康中国梦40. 传统医学珍宝,中医药造福全人类41. 中医药调养身心,健康自如42. 中医药保健护身,健康维护新标杆43. 中医药养生艺术,健康生活新境界44. 中医药传承千年,健康之道指引45. 传统医学智慧,中医药引领健康新时代46. 中医药强身健体,健康更富贵47. 中医药治未病,传统智慧守护健康48. 中华医药宝库,中医药助力健康行动49. 中医药文化遗产,健康之源源不断50. 传承中医药智慧,共铸健康中国。

Java基础知识测试(含答案)

Java基础知识测试(含答案)

Java基础知识测试(含答案)共40道选择题,每题2.5分。

多选题有错则全错,全对才满分.单选题:1.下列哪个声明是错误的?(b)A.inti=10;B.floatf=1.1;C.doubled=34.4;D.byteb=127;2.下面哪个不是java中的关键字?(c)A.publicB.trueC.mainD.cla3.下面哪个语句不会产生编译错误?(c)A.floata=2.0;B.charc=”a”;C.byteb=25;D.booleand=0;4.下面程序哪个语句是正确的cA.bytea=0,b=3;bytec=a+b;B.hort=23;=+12;C.hort=23;+=12;D.floa tf=23+23.23;5.byte类型的大小是aA.-128~127B.-228~128C.-255~256D.-255~2556.下面程序执行的结果是?(b)publicclaTet(){publictaticvoidmain(String[]arg){Sytem.out.println(“”+a+1);}}A.98B.a1C.971D.1977.下面程序执行的结果是?(b)inti=100;while(true){If(i++>100)break;Sytem.out.println(i);}A.100B.101C.102D.1038.下面程序执行的结果是?(c)inta=2;witch(a){cae1:a+=1;break;cae2:a+=2;cae3:a+=3;break;cae4:a+=4;break;default:a=0;}Sytem.out.println(a);A.5B.6C.7D.89.下面程序的运行结果是(d)inta=3,b=1;if(a==b)Sytem.out.println(\A.a=1B.a=3C.编译错误D.正常运行但没有输出10.下面程序的运行后,a,b,c的值正确的是:binta=1,b=2;intc=(a+b>3a++:++b);A.a=2,b=3B.a=1,b=3C.a=1,b=2D.c=211.下面程序的运行结果bpublicclaDemo{publictaticintfun(intc){returnc+=2;}publictaticvoidmain(String[]arg){inttemp=fun(2);Sytem.out.println(temp);}}A.2B.4C.6D.812.下面程序的运行结果,哪个是正确的bintb=1;while(++b<3)Sytem.out.println(\A.程序将会进入死循环导致无输出B.输出一次LOOPC.会输出多次LOOPD.程序中含有编译错误13.下面数组定义错误的是(d)CA.int[]arr={23,45,65,78,89};B.int[]arr=newint[10];C.int[]arr=newint[4]{3,4,5,6};D.int[]arr={a,23,45,6};14.下面程序执行的结果是?(d)int某=1,y=1;if(某++==2&++y==2){某=7;}Sytem.out.println(\,y=\A.某=1y=2B.某=7y=1C.某=7y=2D.某=2y=215.下面不属于基本数据类型的是(b)A.intB.doubleC.longD.int[]16.给出下列代码:booleana=fale;booleanb=true;booleanc=(a&&b)&&(!b);intreult=(c==fale)1:2;执行完后,c与reult 的值是(a).A.fale和1B.true和2C.true和1D.fale和217.阅读下列代码:publicclaTet{publictaticvoidmain(String[]arg){intf=12;inti=3;Sytem.out.pr intln(f/i);}}程序运行结果为(c).A.3B.3.0C.4D.4.018.下面程序执行的结果是?(c)booleanb=true;if(b=fale){Sytem.out.println(\}eleif(b){Sytem.out.println(b);}eleif(!b){Sytem.out.println(\}eleSytem.out.println(\A.aB.tru eC.cD.d19.下面程序执行的结果是?(d)int某=2,y=3;witch(某){default:y++;cae3:y++;cae4:y++;}Syetem.out.println(\A.3B.4C.5D.638.下面哪几段代码不会出现编译错误(ac)A.booleanb=true;booleanb2=true;if(b==b2){Sytem.out.println(“Sotrue”);}B.inti=0;if(i){Sytem.out.println(“Hi”);}C.inti=1;intj=2;if(i==1||j==2)Sytem.out.println(“OK”);D.in ti=1;intj=2;if(i==1&|j==2)Sytem.out.println(“OK”);39.下面关于函数描述正确的是(ad)A.函数是对功能代码块的封装B.函数没有返回值的时候什么都不用写C.没有返回值的函数,不能有return语句D.函数是可以没有形参的40.下面关于循环描述正确的是(ad)A.while循环先判断循环条件,后执行循环操作B.while至少会执行一次C.do-while先进行循环条件判断,后执行循环操作D.do-while循环至少执行一次,后进行循环判断。

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集合练习题(打印版)# 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集合-练习题

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集合知识测试

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编程中,集合(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集合,用于存储字符串数据。

java考试题及答案

java考试题及答案

java考试题及答案一、选择题(每题2分,共20分)1. Java语言的标识符可以包含以下哪些字符?A. 数字B. 下划线C. 美元符号D. 空格答案:B2. 下列哪个选项是Java中的关键字?A. classB. mainC. publicD. all of the above答案:D3. Java中,哪个修饰符表示成员变量或方法是私有的?A. publicB. privateC. protectedD. static答案:B4. Java中,哪个关键字用于捕获异常?A. tryB. catchC. finallyD. throw答案:B5. 在Java中,下列哪个数据类型是基本数据类型?A. StringB. intC. ArrayListD. HashMap答案:B6. 下列哪个选项不是Java集合框架的一部分?A. ListB. MapC. SetD. String答案:D7. Java中,哪个关键字用于定义接口?A. classB. interfaceC. abstractD. final答案:B8. 在Java中,下列哪个选项不是线程安全的?A. VectorB. ArrayListC. LinkedListD. HashMap答案:B9. Java中,下列哪个选项是正确的继承关系?A. Object is a subclass of StringB. String is a subclass of ObjectC. Object is a superclass of StringD. String is a superclass of Object答案:B10. 下列哪个选项不是Java中的访问修饰符?A. publicB. privateC. protectedD. global答案:D二、填空题(每题2分,共20分)1. Java中,用于定义类的关键字是______。

答案:class2. Java中,用于定义接口的关键字是______。

Java集合知识测试--A卷

Java集合知识测试--A卷

d)底层是链表结构5.关于迭代器说法错误的是(D}a)迭代器是取出集合元素的方式b)迭代器的hasNext()方法返回值是布尔类型O1.iSt集合有特有迭代器d)next。

方法将返回集合中的上一个元素.6.在我们所学学何中,下面哪儿项是接口(ABCD)a)java.Utll-Mapb)java.util.CollectionU)java.util.1.istd)java.util.Set7 .实现下列哪个接II,可以启用比较功能(D)a)RUnnable接口b)Ixerat×>r接「Ic)Serializable接口d)ComParatOi接口8 .下面代码运行的结果是(八)Array1.ist<String>al=newArray1.ist<String><);al.add(true);al,add(123);al.add(''abc zz);System.out.printIn(al);a)娟译失败b)(true,123]c)[true,123,abc);d)[abc];9 .依据课堂要求重写equals和hashCode后.下面关于这两个方法说法正确的足(BC)a)两个对象的hashCode值相同,则他们利用equals()方法返回值确定为trueb>两个对象的hashcode值相同,则他们冏用equals()方法返I可伯可以为false c}hashCode值一般及对象的成员变趾有关d)只要申与equals方法,就确定要取有hashCode方法10 .将MaP集合中的键存储到Set集合的方法是(C)a)entrySet0b)get()OkeysetOd)put()11 .Java中的集合类包括Irray1.ist.,1.inked1.ist,HaShZaP等类,卜列关于集合类描述正确的是(ABD>a)Array1.ist和1.inked1.ist均实现j'1.ist接口b)Array1.ist的查询速度比1.inked1.ist快C)添加和删除元素时,Array1.Ist的表现更佳d)HashMap实现MaP接口,它允许任何类型的键和值对象,并允许将null用作键或值12.Rrray1.ist和VeCtOr的区分说法正确的是(B)a)Array1.iSt是线程平安的,VeCtOr是战程不平安b)Array1.iSt是线程不平安的.VeetOr•是线程平安的OArray1.iSC底层是数杷结构,VeCtOr底层是徒在结构d)Array1.iSt底层是链表结构,VeCtor底层是数结构13.Array1.ist的初始化内容如下:Array1.ist<String>list=new Array1.isto();list.add("java");list.add(',aaa");list.add("java");list.add("java");list.add(,,bbb");卜面可以册除IiSt中全部的"java"的代码是(八)a)for(int i=list.size()-1;i>=O;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);))Olist.remove("java");d)list.removeAll("java");14.运用TreeSet的无参构造创隹集合对象行饰元东时,该兀求必需(Aa)实现COmParabIe接口b)有main方法c)有get和set方法d)实现SeriaIIzable接口15.将舜台转成数组的方法是(C)a)as1.ist()b)CoCharArray()OSArray()d)copy()16.F面关于HashMap和HaShtable的区分,说法正确的是(CD)a}HaShtabIe战程不平安,效率高b>HaShEaP线程平安,效率低c»HaShMaP允许null⅛t和伯d}Hashtable不允许null键和伯17.对于增加for循环说法倍误的是(八)a)增加for循环可以干腌诩历MaP集合b)增加for循环可以操作数组c)增加for循环可以操作COlleCtiOn集合d)增加for循环是JDKI.S版本后出现的18.下面的代码用于输出字符数组ch中^个字符出现的次数publicstaticvoid main(String[]args)(char[)ch={,a',,c,z'a',,b,,' c,,'b');HashMapmap-new HashMap();for(int i=0;i<ch.length;i++){〃位置①)System.out.printIn(map);)应当埴入位置①的代码是,不允许运用工具运行程序(CD)a)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);)O 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.Collections工具类中的binarySearch方法描述正确的是(B)a)binarysearch。

10个Java经典的List面试题!

10个Java经典的List面试题!

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基础之集合测试

单选题:(每道题目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语言中用于存储和操作多个对象的一种数据结构。

在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时,不需要进行额外的同步处理。

Java集合知识测试B知识分享

Java集合知识测试B知识分享

J a v a集合知识测试B集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共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()删除元素 iterator(普通迭代器)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)方法的理解正确的是(ABC )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.下列有关泛型的代码中,说法正确的是(A ) ?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不知道是什么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>d)定义格式错误,参数列表应该改为(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))) {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”);}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,sizeb)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接口//否则会出现类型转换异常ClassCaseExceptionc)有get和set方法d)必须实现Serializable接口40.Collections工具类中的binarySearch()方法描述正确的是(D)a)binarySearch()方法只能操作Set集合b)binarySearch()方法可以操作所有的集合c)binarySearch()方法只能操作Map集合d)binarySearch()方法只能操作List集合。

  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); //泛型 String 类型字符串只能写Stringal.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方法完全没有关系A也可以为false10.将Map集合中的键存储到Set集合的方法是( C )a)entrySet() Map.Entryb)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); 要i--}}c) list.remove("java"); 只能删除一个javad) 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集合要先拿到所有键的Set集合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);}应该填入位置①的代码是,不允许使用工具运行程序( CD )a)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()方法描述正确的是( B )a)binarySearch()方法只能操作Set集合b)binarySearch()方法只能操作List集合c)binarySearch()方法只能操作Map集合d)binarySearch()可以操作所有的集合21.下面代码的运行结果是( D )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)[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转成集合后,不可以进行的操作是( A )a)增加集合中的元素不能更改集合长度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()方法结合实现length()错误29.下面类或者接口中,不属于集合体系的是( A )a) java.util.Collections 工具类b) java.util.Mapc) java.util.Vectord) java.util.Hashtable30.下面的类是同步的有( BD )。

相关文档
最新文档