首页 > 代码库 > Java的集合类
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的时候就会报出异常。
Java的集合类