这篇博文主要介绍集合的整个大概体系。
1.什么是集合
集合,顾名思义就是用来存储数据的对象,只不过在Java中,这些数据就是其他对象,它是一种数据结构的体现,也是对数组在功能上的扩展。java.util包下的集合框架主要由几个接口和实现类组成,大致组成如下图:
我们可以看出List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口,接下来让我们看一下具体的整个体系的设定:
单例集合
–Collection 根接口
----List接口:实现了List集合类的特点,有序,可重复。
------ArrayList:底层使用了Object数组实现,查询速度快,增删慢。
------LinkedList:查询速度稍慢,增删快。
------Vector:底层使用了Object数组实现,是线程安全的,效率稍低。
----Set接口:无序,不可重复。
------HashSet:使用了Hash表支持的。 判断重复元素的依据,hashCode()和equals()方法。
------TreeSet::可以对元素进行排序。如果元素不具备自然顺序的特性,那么元素所在的类必须实现Comparable接口或者是传入比较器对象。
双列集合
–Map根接口:数据是以键值对的形式存在的。键不可以重复,值可以重复。
----HashMap:键也是使用了Hash表支持的。键不可以重复,主要是是使用了hashCode()和equals()方法判断的。
----TreeMap:可以对键进行排序,那么元素所在的类必须实现Comparable接口或者是传入比较器对象。
----Hashtable:与HashMap的实现是一样的,是线程的安全的。
2.什么时候使用集合
对于数组我们也非常的熟悉,现又学习了集合,那么该什么时候用数组什么时候用集合呢?
大部分的时候我们还是可以集合代替掉数组的,当需要我们组织一组数量不确定的数据,通过循环迭代处理的时候我们就使用集合类。并且在一些并发的情况下我们可以使用并发集合,这个我们后续再说。
通过上面的描述应该大致的了解了集合的整个大概的体系,后面我们在慢慢深入的去了解每个集合类的用途和结构。