TreeMap用法总结 2019.02.21 20:41:09字数 882阅读 8025
TreeMap用法总结
public class TreeMap
extends AbstractMap
implements NavigableMap, Cloneable, Serializable
【TreeMap】TreeMap中的元素默认按照keys的自然排序排列。
(对Integer来说,其自然排序就是数字的升序;对String来说,其自然排序就是按照字母表排序)
构造函数
-
TreeMap()
:创建一个空TreeMap,keys按照自然排序
TreeMap
treeMap = new TreeMap<>();
-
TreeMap(Comparator comparator)
:创建一个空TreeMap,按照指定的comparator排序
TreeMap
map = new TreeMap<>(Comparator.reverseOrder()); map.put(3, "val"); map.put(2, "val"); map.put(1, "val"); map.put(5, "val"); map.put(4, "val"); System.out.println(map); // {5=val, 4=val, 3=val, 2=val, 1=val}
-
TreeMap(Map m)
:由给定的map创建一个TreeMap,keys按照自然排序
Map
map = new HashMap<>(); map.put(1, "val"); ... TreeMap treeMap = new TreeMap<>(map);
-
TreeMap(SortedMap m)
:由给定的有序map创建TreeMap,keys按照原顺序排序
V put(K key, V value)
:将指定映射放入该TreeMap中V putAll(Map map)
:将指定map放入该TreeMap中
void clear()
:清空TreeMap中的所有元素V remove(Object key)
:从TreeMap中移除指定key对应的映射
V replace(K key, V value)
:替换指定key对应的value值boolean replace(K key, V oldValue, V newValue)
:当指定key的对应的value为指定值时,替换该值为新值
boolean containsKey(Object key)
:判断该TreeMap中是否包含指定key的映射boolean containsValue(Object value)
:判断该TreeMap中是否包含有关指定value的映射Map.Entry
:返回该TreeMap的第一个(最小的)映射firstEntry() K firstKey()
:返回该TreeMap的第一个(最小的)映射的keyMap.Entry
:返回该TreeMap的最后一个(最大的)映射lastEntry() K lastKey()
:返回该TreeMap的最后一个(最大的)映射的keyv get(K key)
:返回指定key对应的valueSortedMap
:返回该TreeMap中严格小于指定key的映射集合headMap(K toKey) SortedMap
:返回该TreeMap中指定范围的映射集合(大于等于fromKey,小于toKey)subMap(K fromKey, K toKey)
Set
:返回由该TreeMap中的所有映射组成的Set对象void forEach(BiConsumer super K,? super V> action)
:对该TreeMap中的每一个映射执行指定操作Collection
:返回由该TreeMap中所有的values构成的集合values()
Object clone()
:返回TreeMap实例的浅拷贝Comparator super K> comparator()
:返回给该TreeMap的keys排序的comparator,若为自然排序则返回nullint size()
:返回该TreepMap中包含的映射的数量
TreeMap treeMap = new TreeMap<>();
treeMap.put(1, "a");
treeMap.put(2, "b");
treeMap.put(3, "c");
treeMap.put(4, "d");
// treeMap: {1=a, 2=b, 3=c, 4=d}treeMap.remove(4);
// treeMap: {1=a, 2=b, 3=c}
int sizeOfTreeMap = treeMap.size();
// sizeOfTreeMap: 3treeMap.replace(2, "e");
// treeMap: {1=a, 2=e, 3=c}Map.Entry entry = treeMap.firstEntry();
// entry: 1 -> a
Integer key = treeMap.firstKey();
// key: 1
entry = treeMap.lastEntry();
// entry: 3 -> c
key = treeMap.lastKey();
// key: 3
String value = https://www.it610.com/article/treeMap.get(3);
// value: c
SortedMap sortedMap = treeMap.headMap(2);
// sortedMap: {1=a}
sortedMap = treeMap.subMap(1, 3);
// sortedMap: {1=a, 2=e}Set setOfEntry = treeMap.entrySet();
// setOfEntry: [1=a, 2=e, 3=c]
Collection values = treeMap.values();
// values: [a, e, c]
treeMap.forEach((integer, s) -> System.out.println(integer + "->" + s));
// output:
// 1 -> a
// 2 -> e
// 3 -> c
遍历方式
- for循环
for (Map.Entry entry : treeMap.entrySet()) { System.out.println(entry); }
- 迭代器循环
Iterator iterator = treeMap.entrySet().iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }
- HashMap可实现快速存储和检索,但其缺点是其包含的元素是无序的,这导致它在存在大量迭代的情况下表现不佳。
- LinkedHashMap保留了HashMap的优势,且其包含的元素是有序的。它在有大量迭代的情况下表现更好。
- TreeMap能便捷的实现对其内部元素的各种排序,但其一般性能比前两种map差。
推荐阅读
- Java|Java基础——数组
- 人工智能|干货!人体姿态估计与运动预测
- java简介|Java是什么(Java能用来干什么?)
- Java|规范的打印日志
- Linux|109 个实用 shell 脚本
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- Spring注解驱动第十讲--@Autowired使用
- SqlServer|sql server的UPDLOCK、HOLDLOCK试验
- jvm|【JVM】JVM08(java内存模型解析[JMM])
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)