# 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) 规则发生改变。 简单说下原理: