面试题总结——集合篇

1.集合构架图

2.Collection与Collections的区别

    (1)Collection是一个接口,包含了所有的集合,并为它们提供了通用的操作方法;

    (2)Collections是一个包装类,包含了很多静态方法,不能被实例化。

3.如何实现数组和List接口之间的转换

    (1)数组—>List:使用Arrays.asList(array)进行转换,代码如下......

        String[] array = new String("李元芳","射手一位!");

        Array.asList(array);

    (2)List—>数组:使用List自带的toArray(0方法,代码如下......

        List list = new ArraayList();

        list.add("马超");

        list.add("曜");

        list.toArray();

3.迭代器Iterator是什么,有什么特点?

    Iterator 提供了遍历任何Collection接口的接口。可以从一个Collection接口中使用迭代器获取迭代实例;迭代器取代了Java框架中的Enumeration,允许调用者在迭代过程中移除元素。

    特点:更加安全,可以确保在当前遍历的集合元素被更改的时候就会抛出ConcurrentModificationException 异常。

4.如何确保一个集合不被修改?

    可以使用Collections.unmodifiableCollection(Collection c)方法来创建一个只读集合,当出现修改操作时就会抛出Java. lang. UnsupportedOperationException异常,代码如下:

        List list = new ArrayList<>();

        list.add("百里守约");

        Collection clist = Collection.unmodifiableCollection(list);

        clist.add("百里玄策");//此时会抛异常

        System.out.println(list.size());

5.HashMap 和Hashtable 的区别?

    (1) HashMap 没有排序,允许一个 null 键和多个 null 值,而 Hashtable 则不允许;

    (2) HashMap 把Hashtable 的contains 方法去掉了,改成containsvalue 和containsKey,因为contains 方法容易让人引起误解;

    (3) Hashtable 继承自Dictionary 类,HashMap 是Java1.2 引进的Map 接口的实现;

    (4) Hashtable 的方法是Synchronize 的,而HashMap 不是;在多个线程访问Hashtable 时,不需要自己为它的方法实现同步,而HashMap 就必须为之提供外同步;Hashtable 和HashMap 采用的hash/rehash 算法大致一样,所以性能不会有很大的差异。

6.Arraylist 与Vector 区别?

    (1)同步性:Vector 是线程安全的,而 Arraylist 则是线程不安全的;

    (2)数据增长:当需要数据增长时,Vector 默认增长一倍,而 Array 则是增长一半。

7.List、Map、Set 三个接口,存取元素时,各有什么特点?

    (1)List 以特定次序来持有元素,可有重复元素;

    (2)Set 无法拥有重复元素,内部排序;

    (3)Map 保存key-value 值,可以根据key 取值。

你可能感兴趣的:(面试题总结——集合篇)