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的时候就会报出异常。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值