Java集合知识测试B
- 格式:doc
- 大小:68.50 KB
- 文档页数:10
集合部分测试题考试宣言:同学们, 考试考多少分不是我们的目的! 排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听! 那时候学会了, 记住了, 也一样不影响你高薪就业!本套题共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(错误!超引用无效。
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)int 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)String 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集合。