Java集合框架习题

  1. Collection 接口和 Collections 类都是做什么用的 ?

    Collection是一个集合接口。他提供对集合对象进行基本操作的通用接口方法。Collection接口意义是为各种具体集合提供最大化统一操作。
    Collections是一个包装类,他包含有关各种集合的静态方法,大多数方法都是用来处理线性表的,一个工具类,服务于Java的Collection框架
  2. Collection 接口有几个子接口 ?Map 接口有父接口么 ?

    三个子接口 List,Sey,Queue
    没有父接口
  3. List 、 Set 、 Map 三个接口有什么特点 ?

    1. List:可以精确控制列表中每一个元素的插入位置,允许出现重复的值 List列表 linkedList链表
      Set:不允许重复,HashSet存储顺序为无序,TreeSet存储顺序为有序,排序后为升序
    2. Map:它根据键的HashSet值存储数据,根据键可以直接获取它的值,具有很快的访问速度。
  4. 请简述哈希表(散列表)

    散列表也叫作哈希表(hash table),这种数据结构提供了键(Key)和值(Value)的映射关系。只要给出一个Key,就可以高效查找到它所匹配的Value,时间复杂度接近于O(1)。
  5. 以下哪个集合接口支持通过字符串主键检索对象 A`

    A.Map

    B.Set

    C.List

    D.Collection

  1. 以下哪些语句用于创建一个Map实例?D

    A.Map m = new Map();

    B.Map m = new Map(init capacity,increment capacity);

    C.Map m = new Map(new Collection());

    D.以上均不行

  2. 以下代码的执行结果是?

    public class Example {
    
     public static void main(String[] args) {
    
         String s1 = "abc";
         String s2 = "def";
         String s3 = "def";
    
         List list = new ArrayList();
         list.add(s1);
         list.add(s2);
         list.add(s3);
         
         for (String string : list) {
             System.out.println( string );
         }
         
         System.out.println("-------------------");
         
         Set set = new HashSet<>();
         set.add(s1);
         set.add(s2);
         set.add(s3);
         
         for (String string : set) {
             System.out.println( string );
         }
     }
    }
    

    运行结果:

    abc

    def

    def


    abc

    def

  3. 以下代码执行结果是?TreeMap和 HashMap 的区别是什么 ?

    public class Example {
    
     public static void main(String[] args) {
    
         TreeMap map = new TreeMap();
         map.put("one", "1");
         map.put("two", "2");
         map.put("three", "3");
         displayMap(map);
    
     }
    
     static void displayMap(TreeMap map) {
    
         Collection c = map.entrySet();
         Iterator i = c.iterator();
    
         while (i.hasNext()) {
             Object o = i.next();
             System.out.print(o.toString());
         }
     }
    }
    

    运行结果:one=1three=3two=2

    TreepMap:是对键按需存放

    HashMao:用到了哈希吗的算法,一便快速查找一个键

  4. Vector、ArrayList 和 LinkedList 有什么区别 ?

    Arraylist和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,
    但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找有下标,所以查询数据快,
    Vector由于使用了synchronized方法-线程安全,所以性能上比ArrayList要差,LinkedList使用双向链表实
    现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要记录本项前后项即可,插入数据较快。

  5. Arrays.ArrayList 和 java.util.ArrayList 有什么区别 ?

    ArrayList是List接口的实现类

    Arrays.ArrayList是没有add()方法的,并且修改元素也是通过修改之前传递进去的固定长度数组来实现,这就是为什么修改它的元素会直接影响传进来的数组。

  1. Hashtable和HashMap的区别

    继承的父类不同

    Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都实现了Map接口。

    线程--安全性不同

    javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。

  2. 分别使用 HashMap 和 List 以及数组统计数组中相同的值出现的次数

    两次

    String[] array = {"abc" , "ABC" , "123" , "def" , "^_^" , "def" , "abc"};
    
  3. 请写出 Iterator 迭代器的优点

    iterator是为了实现对Java容器(collection)进行遍历功能的一个接口。
    在iterator实现了Iterator接口后,相当于把一个Collection容器的所有对象,做成一个线性表(List),而iterator本身是一个指针,开始时位于第一个元素之前。

  4. 请写出循环 List 、Set、Map 的代码

    for( 集合元素类型  i : list ) {
    
       System.out.println(i)
    
       }    
    
       for( 集合元素类型  i : Set ) {
    
       System.out.println(i)
    
       }    
    
       ```java
       for (Map.Entry m : map01.entrySet()) {
           System.out.println(m);
       }
       ```
    
  1. 以下哪个集合接口支持元素排序 A

    A.Collection

    B.Set

    C.List

    D.Map

    注释:以上习题答案均为自己书写,并非标准答案

你可能感兴趣的:(Java集合框架习题)