精选集合面试题整理

1. 说说常见的集合有哪些吧?

    答:Map 接口和Collection接口是所有集合框架的父接口

    1. Collection接口的子接口包括:Set接口和List接口

    2. Map 接口的实现类主要有:HashMap、TreeMap、HashTable、ConcurrentHashMap 以及Properties等

    3. Set接口的实现类主要有:HashMap TreeSet LinkedHashSet等

    4.List接口的实现类主要有:ArrayList、LinkedList、Stack 以及Vector等

2. HashMap 与HashTable的区别?

    1. HashMap没有考虑同步,是线程不安全的;Hashtable使用了synchronized关键字 是线程安全的;

    2.HashMap允许K/V都是null,后者K/V都不允许为null;

    3. HashMap继承自AbstractMap类;而Hashtable继承自Dictionary类

3. ArrayList 和 Vector 区别?

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

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

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

        List以特点次序来持有元素时,可有重复元素,Set无法拥有重复元素,每部排序。Map保存key-value值,value可多值。

5. set 里的元素不能重复。那么用什么方法来区分重复与否呢?

        Set里元素是不能重复的,用equals() 方法区分重复与否。覆盖equals() 方法用来判断对象的内容是否相同,而"==" 来判断地址是否相等,用来确定引用值是否是同一对象。

6. HashMap 和 Hashtale的区别?

        二者都实现Map接口,是将唯一键映射到特点的值上,主要区别与:

 1. HashMap没有排序,允许一个null键和和多个null值,而HashMap不允许。

 2. HashMap把HashMap的contains方法去掉了,改成containvalue和containKey,因为contains方法容易让人引起误解。

3. Hashtable继承自Dictonary类,HashMap是java1.2引进的Map接口的实现。

4. Hashtable的方法是同步的,而HashMap不是,在多个线程访问Hashtable时,不需要为它的方法实现同步,而HashMap就必须为之提供外同步,

7. Collection 和 Collections的区别

    Collection是java.uitl 下的接口,他是各种集合的父接口,继承于它的接口主要有set 和list;Conllecitons是个java.util下的类,是针对集合的帮助类,提供一系列静态方法对各种集合的搜索,排序,线程安全化等操作。

线程安全的map

1. synchronizedMap

        这种是直接使用工具类里面的方法创建SynchronizedMap, 把传入进行的HashMap对象进行了包装同步而已,看出SynchronizedMap的实现方式是加了对象锁,每次对HashMap的操作,都要先获取mutex的对象锁才能进入,所以性能也不会比HashTable好到那里去,也不建议使用。

2. ConcurrentHashMap

这个也是最推荐使用的线程安全的Map,也是实现方式最复杂的一个集合,每个版本的实现方式也不一样,在jdk8之前是使用分段加锁的一个方式,分成16个桶。每次只加锁其中一个桶,而在jdk8之后又加入了红黑树和CAS算法来实现

原文链接 java集合必会14问

8. 遍历List

```


```

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

相关阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 6,112评论 0 13
  • ArrayList实现原理要点概括 参考文献:http://zhangshixi.iteye.com/blog/6...
    晨光光阅读 4,751评论 0 1
  • 集合类框架的介绍: ![Java 集合类框架](https://upload-images.jianshu.io/...
    LynnGuo阅读 4,099评论 0 1
  • Collection ├List │├LinkedList │├ArrayList │└Vector │└Stac...
    AndyZX阅读 4,413评论 0 1
  • 在编程中,常常需要集中存放多个数据。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有的集合类都位于...
    一一一二二三阅读 3,222评论 0 1

友情链接更多精彩内容