java-collection-TreeMap

结构
这里写图片描述
特点
基于红黑树的 {@link NavigableMap}实现,这个map排序根据键的Comparable 自然排序顺序
或者通过一个{@link Comparator} 提供在map创建时间 依赖于构造函数的使用

此实现提供了保证的log(n)时间复杂度 {@code containsKey}, {@code get}, {@code put} and {@code remove}的操作,TreeMap维护的排序,如任何排序的映射,以及是否提供显式比较器,必须和{@code equals}一致,此排序的映射将正确实现{@code Map} .See {@code Comparable} or {@code Comparator}
有精确定义consistent with equals 这是因为 {@code Map}是根据 {@code equals}操作定义的,,但排序后的映射使用其{@code compareTo} (or {@code compare}),因此从排序地图的角度来看,两个keys被认为通过这个方法判断相等。sorted map的行为定义得很好即使其排序为与{@code equals};它不遵守Map接口的一般规范。

同步
如果多个线程同时访问一个映射,并且至少其中一个线程在结构上修改映射,它必须通过外部同步,结构修改是添加或删除一个或多个映射,仅更改相关联的值,*现有的key不是结构修改。
通常通过自然地对某些对象进行同步来实现封装Map。如果不存在这样的对象,则应该使用“包装”来映射该映射。通过* {@link Collections#synchronizedSortedMap Collections.synchronizedSortedMap}。
最好在创建时完成,以防止意外发生。

  SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));

fail-fast
由集合的 {@code iterator} 方法返回的迭代器所有此类的“集合视图方法”返回fail-fast,
如果地图在任何时候被修改 迭代器以任何方式创建,除了通过迭代器自身{@code remove} ,
迭代器将抛出ConcurrentModificationException。
因此,面对并发修改,迭代器快速而干净地失败,而不是冒险。在未来不确定的时间内任意的、不确定的行为。注意,迭代器的故障快速行为不能得到保证。事实上,一般来说,不可能作出任何硬的保证。
存在不同步的并发修改。故障快速迭代器在尽力而为的基础上,抛出ConcurrentModificationException
因此,编写一个依赖于此的程序是错误的。迭代器的故障快速行为只用于检测缺陷

在该类中由方法返回的所有 {@code Map.Entry} ,及其视图在产生时表示映射时的快照。不支持{@code Entry.setValue}方法。可以使用{@code put}改变映射。

参考资料:
https://www.cnblogs.com/skywang12345/p/3310928.html
https://blog.csdn.net/zhangyuan19880606/article/details/51234420/
https://blog.csdn.net/jeffleo/article/details/54989917
https://www.cnblogs.com/chenmo-xpw/p/4922641.html
https://blog.csdn.net/zhangyuan19880606/article/details/51234420/
https://www.cnblogs.com/skywang12345/p/3310928.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值