思维导图总结-collections

本文详细介绍了Java集合框架中的关键组件,包括Collections工具类的功能及其使用场景,对比了HashMap与HashTable的区别,探讨了不同Map实现的特点,并提供了自定义类作为键时的注意事项。

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

Collections  Collection

Collections是针对集合类的一个包装类,它提供一系列静态方法,以实现对各种集合的搜索、排序、线程安全化等操作,其中大多数方法都是用来处理线性表。Collections类不能实例化,如同一个工具类,服务于Collection框架。若在使用Collections的方法时,对应的Collection的对象为null,则这些方法都会抛出NullPointerException。

Collection是一个集合接口。它提供的对集合对象进行基本操作的通用接口方法。实现该接口的类主要有List和Set,该接口的设计目标是为各种具体的集合提供最大化的统一的操作方式。

HashMap  HashTable

HashMap

HashTable

是HashTable的轻量级实现

 

允许存在一条null键值的记录

不允许有null键值

非线程安全,需要提供额外的同步机制

线程安全,支持线程同步

实现Map interface

继承自Dictionary

Iterator

Enumeration

Hash默认数组大小16,扩容每次都是2的n次方

Hash数组默认大小11,扩容方式old×2+1

使用hashCode作为hash值

 

HashMap  LinkedHashTable  TreeMap

HashMap使用最多,无序,多用于 插入、删除、定位元素

LinkedHashMap 是HashMap的一个子类,输出顺序和输入顺序相同,此外,它还可以按读取顺序来排列

TreeMap 实现了SortMap接口,按键排序,用于自然顺序或自定义顺序遍历键


HashMap  WeakHashMap

HasnMap采用强引用方式,即当HashMap中的key没有被外部引用时,只有在这个key从HashMap中删除后,才可以被垃圾回收器回收

WeakHashMap 采用弱引用方式,即只要WeakHashMap中的key不在被外部引用,它就可以被垃圾回收器回收。

注:

使用自定义类作为HashMap的key时,需要注意以下几个问题

1、如果想根据对象的相关属性来自定义对象是否相等的逻辑,此时就需要重写equals()方法,而且必须重写hashCode方法。

2、当自定义类的多项作为HashMap(HashTable)的key时,最好把这个类设计为不可变类。

3、从HashMap的工作原理可以看出,如果两个对象相等,那么这两个对象有着相同的hashCode,反之则不成立。


欢迎各位讨论指教


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值