java util 集合类小结

本文深入探讨集合框架中的List和Set接口,以及Map容器的实现。解释了ArrayList、Vector、LinkedList、HashSet、TreeSet、Hashtable、HashMap和TreeMap的工作原理,强调了它们在不同场景下的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Collection主要有list和set两个子接口:

List接口:对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList,Vector和LinkedList。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。(ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的 )

 

Set接口:是Collection的另一种扩展,在Set中的对象元素不能重复。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的(实现Comparable接口)。

 

ps:集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。Comparable是内部排序,即一个类实现Comparable接口后,自身拥有一个compareTo()的比较方法,用来将自身和传来的对象进行比较。而Comparator是外部排序,它使用的策略模式,将你所需要的比较逻辑实现为一个Comparator,然后传回给对象(不需要改变对象本身结构,面向接口编程),从而实现比较。

 

 

 

Map是一种把键对象和值对象进行关联的容器:

Map比较常用的实现:Hashtable,HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放。TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。(HashTable 是线程安全的,不能存储 null 值 ,HashMap 不是线程安全的,可以存储 null 值)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值