面试经常问到的集合问题

1.Collection、Set和List的区别? 
    Collection对象之间没有指定的顺序,允许有重复元素和多个null元素对象;它是Set和List接口的父类,是一种最通用型的集合接口; 
    Set各个元素对象之间没有指定的顺序,不允许有重复元素,最多允许有一个null元素对象; 

    List各个元素对象之间有指定的顺序,允许重复元素和多个null元素对象; 

2.LinkedList,ArrayList,Vector,Stack,Queue区别?NodeList区别?

     1)LinkedList链式访问,以指针相连,适合于在链表中间需要频繁进行插入和删除操作。

    2)ArrayList类似数组的形式,按照序号存储,随机访问速度非常快。

    3)Vector向量按照各元素序号存储,数组大小可以动态增长,对于大容量数据存储效率较高。

    4)Stack堆栈,先进后出的数组。

3.ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?

  Vector和HashTable是线程同步的(synchronized)。性能上,ArrayList和HashMap分别比Vector和Hashtable要好。

4.什么时候使用Hashtable,什么时候使用HashMap  

     a.HashMap不是线程安全的;HashTable是线程安全的,其线程安全是通过Sychronize实现。

     b.由于上述原因,HashMap效率高于HashTable。

     c.HashMap的键可以为null,HashTable不可以。

     d.多线程环境下,通常也不是用HashTable,因为效率低。HashMap配合Collections工具类使用实现线程安全。同时还有ConcurrentHashMap可以选择,该类的线程安全是通过Lock的方式实现的,所以效率高于Hashtable。

 同时如果有多个线程访问HashMap,Collections.synchronizedMap()可以代替,总的来说HashMap更灵活。

5.什么是Iterator

  一些集合类提供了内容遍历的功能,通过java.util.Iterator接口。这些接口允许遍历对象的集合。依次操作每个元素对象。当使用 Iterators时,在获得Iterator的时候包含一个集合。通常在遍历一个Iterator的时候不建议修改集合。

6.Iterator与ListIterator有什么区别?

  Iterator:只能正向遍历集合,适用于获取移除元素。

      ListIerator:继承Iterator,可以双向列表的遍历,同样支持元素的修改。

posted @ 2018-01-08 18:36  拯救搁浅的程序媛  阅读(162)  评论(0编辑  收藏  举报