java.util.TreeMap
来源:互联网 发布:单代号时标网络计划 编辑:程序博客网 时间:2024/04/19 08:44
java.util.TreeMap
//说明:
基于红黑树(Red-Black tree)的 NavigableMap 实现。
该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。
此实现为 containsKey、get、put 和 remove 操作提供受保证的 log(n) 时间开销。
这些算法是 Cormen、Leiserson 和 Rivest 的 Introduction to Algorithms 中的算法的改编。
注意,如果要正确实现 Map 接口,则有序映射所保持的顺序(无论是否明确提供了比较器)都必须与 equals 一致。
(关于与 equals 一致 的精确定义,请参阅 Comparable 或 Comparator)。
这是因为 Map 接口是按照 equals 操作定义的,但有序映射使用它的 compareTo(或 compare)方法对所有键进行比较,
因此从有序映射的观点来看,此方法认为相等的两个键就是相等的。即使排序与 equals 不一致,有序映射的行为仍然是 定义良好的,只不过没有遵守 Map 接口的常规协定。
注意,此实现不是同步的。如果多个线程同时访问一个映射,并且其中至少一个线程从结构上修改了该映射,则其必须 外部同步。
(结构上的修改是指添加或删除一个或多个映射关系的操作;仅改变与现有键关联的值不是结构上的修改。)
这一般是通过对自然封装该映射的对象执行同步操作来完成的。
如果不存在这样的对象,则应该使用 Collections.synchronizedSortedMap 方法来“包装”该映射。
最好在创建时完成这一操作,以防止对映射进行意外的不同步访问,如下所示:
SortedMap m = Collections.synchronizedSortedMap(new TreeMap(...));
collection(由此类所有的“collection 视图方法”返回)的 iterator 方法返回的迭代器都是快速失败 的:
在迭代器创建之后,如果从结构上对映射进行修改,除非通过迭代器自身的 remove 方法,否则在其他任何时间以任何方式进行修改都将导致迭代器抛出 ConcurrentModificationException。
因此,对于并发的修改,迭代器很快就完全失败,而不会冒着在将来不确定的时间发生不确定行为的风险。
注意,迭代器的快速失败行为无法得到保证,一般来说,当存在不同步的并发修改时,不可能作出任何肯定的保证。
快速失败迭代器尽最大努力抛出 ConcurrentModificationException。
因此,编写依赖于此异常的程序的做法是错误的,正确做法是:迭代器的快速失败行为应该仅用于检测 bug。
此类及其视图中的方法返回的所有 Map.Entry 对都表示生成它们时的映射关系的快照。
它们不 支持 Entry.setValue 方法。(不过要注意的是,使用 put 更改相关映射中的映射关系是有可能的。)
0 0
- java.util.TreeMap
- java.util.TreeMap源码解析
- java.util(二)HashMap TreeMap LinkedHashMap
- java.util(一)HashMap TreeMap TreeSet
- java.util.TreeMap.headMap()方法实例
- import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; /*
- Caused by: java.lang.NoSuchMethodError: java.util.TreeMap.firstEntry()Ljava/util/Map$Entry;
- Java在操作ArrayList、HashMap、TreeMap等容器类时,遇到了java.util.ConcurrentModificationException异常
- java TreeMap
- Java TreeMap
- Java TreeMap
- java TreeMap
- Excel用线程池 创建很多行并填充内容,解决TreeMap的java.util.ConcurrentModificationException
- JAVA.map 接口java.util.Map;它有四个实现类,分别是HashMap Hashtable LinkedHashMap 和TreeMap.
- activity 之间通过intent传递TreeMap时出现java.lang.ClassCastException: java.util.HashMap cannot be cast to jav
- java collection 之 TreeMap
- java TreeMap 中文 排序
- java中的treemap
- 蓝鸥Unity开发基础—— 二维数组学习笔记
- makefile从shell中获取要跑的testcase
- 字符串前缀:字典树(Trie)的应用
- Regularized least-squares classification(RLSC)
- [leetcode] 78. Subsets
- java.util.TreeMap
- c/c++中整型数据的数据范围
- 腾讯云数据库CDB介绍及数据库与应用数据库分析
- 取不到DAO,java.lang.NullPointerException
- 2015华为校招上机考试编程Java
- dev gridcontrol
- openstack ice自定义调度算法项目详解(horizon、novaclient、api、scheduler、db、自定义数据库)
- Caffemodel数据结构解析与Protocol Buffer技术详解(C++实例)
- Meta http-equiv属性详解