From d8eeb9b7bb7e913563166e6e0535eab2d0fe4b33 Mon Sep 17 00:00:00 2001 From: ranwenjie Date: Tue, 20 Jul 2021 17:57:12 +0800 Subject: [PATCH] add treeMap --- 3 Hash Table/TreeMap in Java.md | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 3 Hash Table/TreeMap in Java.md diff --git a/3 Hash Table/TreeMap in Java.md b/3 Hash Table/TreeMap in Java.md new file mode 100644 index 0000000..485d911 --- /dev/null +++ b/3 Hash Table/TreeMap in Java.md @@ -0,0 +1,75 @@ +# TreeMap in Java + + +java 中 TreeMap的实现原理。 + + + +#### 特点 + +* 有序的Key-value 集合,通过红黑树实现; +* 遍历时元素按照键key的自然顺序进行排序,也可以创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法 +* TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n) + + + +#### 引用场景 + +* 一致性Hash算法 + + + +## 使用 + +``` +//创建TreeMap对象: +TreeMap treeMap = new TreeMap(); + + //新增元素: + treeMap.put("hello",1); + treeMap.put("world",2); + treeMap.put("my",3); + treeMap.put("name",4); + + +//遍历元素, 按照key排序 + Set> entrySet = treeMap.entrySet(); + for(Map.Entry entry : entrySet){ + String key = entry.getKey(); + Integer value = entry.getValue(); + System.out.println("TreeMap元素的key:"+key+",value:"+value); + } + +String firstKey = treeMap.firstKey();//获取集合内第一个元素 + +String lastKey =treeMap.lastKey();//获取集合内最后一个元素 + +String lowerKey =treeMap.lowerKey("jiaboyan");//获取集合内的key小于"jiaboyan"的第一个key + +String ceilingKey =treeMap.ceilingKey("jiaboyan");//获取集合内的key大于等于"jiaboyan"的第一个key + +``` + +## 原理 + + +参考 ![红黑树](../Tree/9-红黑树\ R-B\ tree/红黑树.md) + + +## 应用 + + + +### 一致性Hash算法 + +一致性Hash算法解决的问题是: 数据均匀的分片存储在不同的机器节点上,且在机器节点上发送增删时 (扩容或者缩容时) ,最少数据集的映射(rehash) 规则发生改变。 + +简单说下原理: + + + + + + + +