Java的集合类

在Java的java.util包中,有一批类被称为集合类

集合类,顾名思义,就是存放对象的集合的类,可以是数组形式【ArrayList】,也可以是链表形式【LinkedList】,也可以是两种形式结合【HashMap】。

Java的集合类的父类是Collection接口,主要分为三大类:List、Map、Set。

其中,List是一组元素的集合,最常用到的为ArrayList、LinkedList;

Map是一组成对对象【键值对】的集合,根据Key来存取Value,最常用到的为HashMap和LinkedList;

Set是一个真正数学意义上的元素的集合,其中不包含重复的元素,最常用到的为HashSet和TreeSet。



其中,在JDK的源码中,Set的底层实现都是使用对应的Map来实现的,将存取于Set中的元素作为Map的Key,使用同一个对象作为Value。例如,HashSet中是使用了一个HashMap来作为内部存储实现,



TreeSet也是如此,内部使用了一个TreeMap来存放元素,图就不贴了。


ArrayList和LinkedList的区别前面已经写过博客。

HashMap和TreeMap的区别:

HashMap是基于散列表实现,内部存储结构为邻接表【数组+链表】;

TreeMap是基于红黑树实现,内部存储结构为红黑树。

因此存入HashMap的键值对要求key必须提供hashCode()方法作为散列依据,此方法为Object类中已有;

而对于TreeMap来说,要么在初始化TreeMap时,提供一个Comparator作为比较键大小的依据,或者要求key的类必须实现Comparable。如果这两个条件都没有满足,那向Treemap中put的时候就会报出异常。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。