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


    一、单选题
    1.ArrayList类的底层数据结构是( A )
    A、数组结构
    B、链表结构
    C、哈希表结构
    D、红黑树结构

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

    2.LinkedList类的特点是(B )
    A、查询快
    B、增删快
    C、元素不重复
    D、元素自然排序

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

    3.Vector类的特点是( A )
    A、线程同步
    B、线程不同步
    C、增删快
    D、底层是链表结构

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

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

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

    5.实现下列哪个接口,可以启用比较功能( D )
    A、Runnable接口
    B、Iterator接口
    C、Serializable接口
    D、Comparator接口
    解析:

    6.下面代码运行的结果是( A )
    ArrayList al = new ArrayList();
    al.add(true);
    al.add(123);
    al.add(“abc”);
    System.out.println(al);
    A、编译失败
    B、[true,123]
    C、[true,123,abc];
    D、[abc];

    7.ArrayList和Vector的区别说法正确的是( B )
    A、ArrayList是线程安全的,Vector是线程不安全
    B、ArrayList是线程不安全的,Vector是线程安全的
    C、ArrayList底层是数组结构,Vector底层是链表结构
    D、ArrayList底层是链表结构,Vector底层是数组结构

    8.对于HashMap集合说法正确的是( C )
    A、底层是数组结构
    B、底层是链表结构
    C、可以存储null值和null键
    D、不可以存储null值和null键

    9.下面类或者接口中,不属于集合体系的是( A )
    A、java.util.Collections
    B、java.util.Map
    C、java.util.Vector
    D、java.util.Hashtable

    10.以下能以键_值对的方式存储对象的接口是( B )
    A、java.util.Collection
    B、java.util.Map
    C、java.util.HashMap
    D、java.util.Set

    11.在Java中,( A )类可用于创建链表数据结构的对象。
    A、LinkedList
    B、ArrayList
    C、Collection
    D、HashMap

    12.题示代码的功能为:对于一个存放Person对象的ArrayList进行循
    环遍历。并输出每个Person对象的idCard和userName。 ( D )
    public class Person{
    private Long idCard;
    pirvate String userName;
    //以下是getter和setter方法
    //省略
    }
    List list=new ArrayList<>();
    Person p1=new Person();
    p1.setIdCard(new Long(1001));
    p1.setUserName(“terry”); Person p2=new Person();
    p2.setIdCard(new Long(1002));
    p2.setUserName(“tom”);
    list.add(p1);
    list.add(p2);
    for( 位置① ){
    System.out.println(person.getIdCard()+”:”+person.getUserName());
    }
    那么位置①处的代码为
    A、List list:person
    B、List list:Person
    C、Person person:List
    D、Person person:list

    13.将集合转成数组的方法是( C )
    A、asList()
    B、toCharArray()
    C、toArray()
    D、copy()

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

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

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

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

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

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

    20.关于HashMap集合说法正确的是( B )
    A、HashMap集合是单列集合
    B、HashMap集合不允许存储重复键
    C、HashMap集合不允许存储重复值
    D、HashMap集合线程是安全的

    二、多选题
    1.在我们所学知识中,下面哪几项是接口( ABCD )
    A.java.util.Map
    B.java.util.Collection
    C.java.util.List
    D.java.util.Set

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

    3.下面关于HashMap和Hashtable的区别,说法正确的是( CD )
    A.Hashtable线程不安全,效率高
    B.HashMap线程安全,效率低
    C.HashMap允许null键和值
    D.Hashtable不允许null键和值

    4.关于HashMap集合说法正确的是( AB )
    A.HashMap集合是双列集合
    B.HashMap集合不允许存储重复键
    C.HashMap集合不允许存储重复值
    D.HashMap集合线程是安全的

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

    6.下面集合中属于线程安全的类是( BD
    A.ArrayList B.Vector
    C.HashMap D.Hashtable

    7.以下哪些继承自 Collection 接口( AB
    A、List B、Set C、Map D、Array

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

  • 相关阅读:
    TF中的自定义正则项
    [工具]多线程下载 axel
    [算法]kv-memory 表示dense特征
    [code]tensorflow分桶
    [code]Keras API的用法记录
    vim显示下划线不高亮问题
    [代码] kv2sparse
    [代码]并发执行python的例子
    AI算法手册
    [工具]soundflower
  • 原文地址:https://www.cnblogs.com/nm666/p/8516708.html
Copyright © 2020-2023  润新知