面试题总结——集合篇

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<String> list = new ArraayList<String>();

        list.add("马超");

        list.add("曜");

        list.toArray();

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

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

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

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

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

        List<String> list = new ArrayList<>();

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

        Collection<String> 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 取值。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容