关于java集合

来源:互联网 发布:vb管理系统 编辑:程序博客网 时间:2024/05/17 06:58
集合,java中重中之重的数据类型,主要也是因为其涉及到数据结构方面的知识。不管你所应用的是什么语言,最根本的实际都是对数据进行操作。了解各种数据结构,有便于在开发过程中合理的应用,提高代码效率,稳定性。


我参与过的所有面试中都会问到集合方面的知识,最常被问到的是关于map的,问的浅一些的一般都是hashmap 与 hashtable 的区别,这种问题一般在刚开始学习java的时候都会接触到,很简单。在稍微推进一点会问到hashmap的实现原理,内部结构。这个问题其实只要你有稍微了解过hash就可以很轻松的答上。然后如果在深究一下可能会被问到类似ConcurrentHashmap 、BlockingQueue,比如ConcurrentHashmap的特点,为什么是线程安全的,为什么读操作不需要加锁。这个就需要你有看过源码,理解了它的内部结构了。

不过在上一周,我有一个小狐的面试,本来还是比较有信心的,因为之前有过两次类似这种互联网公司的面试经验,对一些主要知识也有了解,加上这段时间自己也有比较多的进步,但情况并非如此。

当时的面试官看上去40多岁,很严肃,开始问了一些多线程,算法类的问题,不是特别深,但也都有点层次。问到集合的时候突然来了一句,你说一下集合的各个接口的层级关系,这是一个非常基础的问题。Collection接口下面有两个接口,一个Set,一个List 然后还有不属于collection的一个map接口,下面有一堆类的云云。又问,Set与List的区别,我本来马上就要回答可是突然想不起来了,脑袋空白了。哎,在刚毕业那会,这种问题基本是条件反射式的答出来,实在是太基础太简单了。但这会我脑袋里只是在想Set是神马。。。,是神马。自从这个问题过后,面试官已经失去兴趣了,剩下的问题也是简单的问一下就过了,有些你脑袋里的知识想说也没机会了。可能是这两年基本都没有用到过Set,一时间思维障碍了,不过也不应该忘记,所以决定总结一下java集合,写在这以便以后温习。

下图为整个集合类的结构(转),这个图非常清晰的描绘的整个结合的层级关系。








另外,关于各个集合类,推荐可以看看这个
http://www.cnblogs.com/eflylab/archive/2007/01/19/625086.html,挺全的。实在懒得写了。