java集合类详解(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gaibian0823/article/details/52370631

       最近一直想去总结java集合类,但是网上的一些资料,总是没有显示全真正的java集合类,今天凑巧在网上看到这么一张图:
这里写图片描述
点击放大图片

那么我们为什么要引入集合这个概念?

       在集合之前,当我们处理数据时,需要使用数组:
       1.固定的大小,或不可能增长太多
       2.同一个数组只能存放类型一样的数据(基本类型/引用类型)
       3.你会做大量的索引,即你知道你会经常想要第三个元素,或第五,或任何。
       所以我们才有了集合,我们不再担心以上数组出现的问题。

       我们不难发现,java集合类总共分为两大类:Map和Collection.

       处于图片左上角的那一块灰色里面的四个类(Dictionary、HashTable、Vector、Stack)都是线程安全的,但是它们都是 JDK的老的遗留类,现在基本都不怎么使用了,都有了对应的取代类。其中Map是用来代替图片中左上角的那个Dictionary抽象类(Map的官方文 档里面有说明)。官方推荐使用Map接口来代替它。同样对于HashTable,官方推荐ConcurrentHashMap来代替。接着下面的Vector是List下面的一个实现类。

       接着最上面的粉红色部分是集合类所有接口关系图。其中Map的结构比较简单,而Collection的结构就相对复杂一些。Collection有三个继承接口:List、Queue和Set。

       接下来的绿色部分则是集合类的主要实现类了。这也是我们最经常使用的集合类了。

按照实现接口分类:

实现Map接口的有:EnumMap、IdentityHashMap、HashMap、LinkedHashMap、WeakHashMap、TreeMap
实现List接口的有:ArrayList、LinkedList
实现Set接口的有:HashSet、LinkedHashSet、TreeSet
实现Queue接口的有:PriorityQueue、LinkedList、ArrayQueue

       最下方的一个整块都是java.util.concurrent包里面的类,按照包名我们就可以知道这个包里面的类都是用来处理Java编程中各种并发场景的。

       下一篇,则会从底层实现来分析常用的集合类。

猜你喜欢

转载自blog.csdn.net/gaibian0823/article/details/52370631