以下成语获得包含m中所有键值映射的m ,其关键在low和high之间,包括: SortedMap<String, V> sub = m.subMap(low, high+"\0"); 可以使用类似的技术来生成开放范围 以下成语获得包含m中所有键值映射的m ,其关键在low和high之间,独占: SortedMap<String, V> sub = m.subMap(low+"\0", high); 一个void(无参数 具有类型为SortedMap的单个参数的构造SortedMap ,其创建具有与输入排序映射相同的键值映射和相同顺序的新的排序映射。 NullPointerException - 如果 toKey为空,并且此映射不允许空键 IllegalArgumentException - 如果这个地图本身有一个有限的范围,而 toKey位于范围的范围之外 headMap SortedMap 并且该地图不允许空键 IllegalArgumentException - 如果fromKey大于toKey ; 或者如果该地图本身具有限制范围,并且fromKey或toKey位于范围的范围之外 subMap SortedMap
参考链接: Java SortedMap接口 Java中SortedMap接口的put()方法用于将指定值与该映射中的指定键相关联。 注意:SortedMap中的put()方法是从Java中的Map接口继承的。 以下示例程序旨在说明int put()方法的实现: 示例1: // Java code to show the implementation of // put method in SortedMap // Java code to show the implementation of // put method in SortedMap interface import java.util.*; SortedMap map = new TreeMap<>(); map.put("1", "One"); map.put("3", "Three"); map.put("5", "Five
] view plain copy java.util.SortedMap.comparator()//接收比较器,用于Map排序 java.util.SortedMap.entrySet() / /后去Map中的entrySet集合 java.util.SortedMap.firstKey() //第一个key java.util.SortedMap.headMap(K k)//在k之前的键值对 java.util.SortedMap.keySet() //获取key的set集合 java.util.SortedMap.lastKey() //最后的key java.util.SortedMap.subMap (K k1, K k2)//k1,k2之间的键值对 java.util.SortedMap.tailMap(K) //集合最后的键值对 java.util.SortedMap.values() // 集合所有的values SortedMap实验: [java] view plain copy SortedMap sortedTreeMap = new TreeMap(); // SortedMap
SortedMap 是在 Java 1.2 版本中添加的。它存在于java.util.SortedMap包中。 SortedMap接口的层次结构 SortedMap接口扩展Map接口。 TreeMap 和 ConcurrentSkipListMap 类实现了 SortedMap 接口。java 中 SortedMap 接口的层次结构图如下图所示。 Java 中的SortedMap方法 除了 Map 接口提供的方法外,SortedMap 还提供了几种其他方法,如下所示: 1. SortedMap示例程序 让我们举一个示例程序,这些程序基于 Java 中 SortedMap 接口定义的方法执行各种操作。 由于Java SortedMap是一个接口,它只能与实现SortedMap接口的类一起使用。Java 中的 TreeMap 类实现了 SortedMap 接口。 1.
SortedMap和NavigableMap 决定在讲解TreeMap的源码之前,先讲解这两个接口 SortedMap和SortedSet接口两个接口jdk1.2就已经提供,扩展的NavigableMap SortedMap:顾名思义,此接口应该与排序有关,以下是它的一些方法: Comparator<? super K> comparator(); //可以自定义排序比较器 //按key升序排列,返回子映射,fromKey到toKey,包括fromKey,不包括toKey SortedMap<K,V> 的【不带包含标志】的子映射方法 SortedMap<K,V> subMap(K fromKey, K toKey); SortedMap<K,V> headMap(K toKey); SortedMap TreeMap实现了NavigableMap、SortedMap接口(这另个接口下面会有详细介绍) 意味着它支持一系列的导航方法。比如返回有序的key集合。
:如Set接口下有HashSet、LinkedHashSet、SortedSet(接口)、TreeSet、EnumSet等实现类和子接口,而Map接口下则有HashMap、LinkedHashMap、SortedMap 接口和TreeMap实现类 正如Set接口派生出了SortedSet子接口,SortedSet接口有一个TreeSet实现类,Map接口也派生了一个SortedMap子接口,SortedMap也有一个 SortedMap<K,V> headMap(K toKey) 返回此映射的关键字严格小于的部分的视图toKey。 SortedMap<K,V> subMap(K fromKey, K toKey) 返回此映射部分的视图,其键范围从 fromKey(包含)到toKey独占。 SortedMap<K,V> tailMap(K fromKey) 返回此映射的键大于或等于的部分的视图fromKey。
("5", "b"); sortedMap.put("2", "c"); sortedMap.put("4", "d"); sortedMap.put(" :1 值a sortedMap:2 值c sortedMap:3 值e sortedMap:4 值d sortedMap:5 值b 看上去还以为HashMap也保证了有序性,其实是随机的,如果值设置的复杂一点 :1b 值a sortedMap:2 值b sortedMap:2b 值d sortedMap:3 值c sortedMap:3b 值c sortedMap:4b 值d 很显然只有TreeMap保证了有序性 :2 值c 修改前 :sortedMap:3 值e 修改前 :sortedMap:4 值d 修改前 :sortedMap:5 值b 修改后 :sortedMap:1 值a 修改后 :sortedMap :5 值b 修改后 :sortedMap:2 值c 修改后 :sortedMap:4 值d 修改后 :sortedMap:3 值e
(03) SortedMap 是继承于Map的接口。SortedMap中的内容是排序的键值对,排序的方法是通过比较器(Comparator)。 (04) NavigableMap 是继承于SortedMap的接口。 SortedMap的定义如下: public interface SortedMap<K,V> extends Map<K,V> { } SortedMap是一个继承于Map接口的接口。 它是一个有序的SortedMap键值映射。 SortedMap的排序方式有两种:自然排序 或者 用户指定比较器。 的定义如下: public interface NavigableMap<K,V> extends SortedMap<K,V> { } NavigableMap是继承于SortedMap的接口。
<Integer, String>>() { public Iterable<SortedMap<Integer, String>> call(Iterator<Tuple2<String <Integer, String> finalTopN = partitions.reduce(new Function2<SortedMap<Integer, String>, SortedMap<Integer , String>, SortedMap<Integer, String>>() { public SortedMap<Integer, String> call(SortedMap <Integer, String> m1, SortedMap<Integer, String> m2) throws Exception { final int N = topNum.getValue(); SortedMap<Integer, String> topN = new TreeMap<Integer, String>();
由于篇幅关系,将TreeMap的源码解析分为三部分,本章将对接口NavigableMap以及SortedMap进行解析。 三、SortedMap接口源码解析 3.1 SortedMap接口 public interface SortedMap<K,V> extends Map<K,V> { //返回用于对键的进行排序的比较器 ); //返回小于toKey的map SortedMap<K,V> headMap(K toKey); //返回大于或等于fromKey的map SortedMap<K,V> tailMap <K,V> subMap(K fromKey, K toKey); SortedMap<K,V> headMap(K toKey); SortedMap<K,V> tailMap(K fromKey SortedMap和NavigableMap的接口中,包含了大量的返回Map的方法,这也是作为排序Map的一大特点吧。最后谢谢各位园友观看,与大家共同进步!
搞SortedMap入参 入参从之前打印的结果可以看出来,是个 Ljava/util/SortedMap;, 那就so easy了,把它打印出来即可。 java.util.SortedMap.comparator() //接收比较器,用于Map排序 java.util.SortedMap.entrySet() //后去Map中的entrySet集合 java.util.SortedMap.firstKey() //第一个key java.util.SortedMap.headMap(K k) //在k之前的键值对 java.util.SortedMap.keySet () //获取key的set集合 java.util.SortedMap.lastKey() //最后的key java.util.SortedMap.subMap(K k1, K k2) //k1,k2之间的键值对 java.util.SortedMap.tailMap(K) //集合最后的键值对 java.util.SortedMap.values() //集合所有的values
由于篇幅关系,将TreeMap的源码解析分为三部分,本章将对接口NavigableMap以及SortedMap进行解析。 三、SortedMap接口源码解析 3.1 SortedMap接口 public interface SortedMap<K,V> extends Map<K,V> { //返回用于对键的进行排序的比较器 ); //返回小于toKey的map SortedMap<K,V> headMap(K toKey); //返回大于或等于fromKey的map SortedMap<K,V> tailMap <K,V> subMap(K fromKey, K toKey); SortedMap<K,V> headMap(K toKey); SortedMap<K,V> tailMap(K fromKey SortedMap和NavigableMap的接口中,包含了大量的返回Map的方法,这也是作为排序Map的一大特点吧。最后谢谢各位园友观看,与大家共同进步!
java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.Set; import java.util.SortedMap ,防止领取的红包金额大于预算 /** * 对请求参数名ASCII码从小到大排序后签名 * * @param params */ public static void sign(SortedMap * 生成提交给微信服务器的xml格式参数 * * @param params * @return */ public static String getRequestXml(SortedMap <String, String> createMap(String openid, String userId, int amount) { SortedMap<String, String> params <String, String> sortedMap = HongBaoUtil.createMap(openId, userId, money); HongBaoUtil.sign(sortedMap
= (String) keys.nextElement(); value = props.getProperty(key); //...... } 使用下面的算法来顺序遍历输出,使用SortedMap SortedMap sortedMap = new TreeMap(props); Set set = sortedMap.keySet(); Iterator iterator = set.iterator
if (oriMap == null || oriMap.isEmpty()) { return null; } Map<String, String> sortedMap (oriMap); return sortedMap; } private int getInt(String str) { int i = 0; try public Map<String, String> sortMapByValue(Map<String, String> oriMap) { Map<String, String> sortedMap tmpEntry = null; while (iter.hasNext()) { tmpEntry = iter.next(); sortedMap.put (tmpEntry.getKey(), tmpEntry.getValue()); } } return sortedMap; } 本例中先将待排序oriMap
<K,V> 发现NavigableMap继承了SortedMap,再看SortedMap的签名 SortedMap public interface SortedMap<K,V> extends Map <K,V> SortedMap就像其名字那样,说明这个Map是有序的。 此为,SortedMap中key的顺序性应该与equals方法保持一致。 介绍完了SortedMap,再来回到我们的NavigableMap上面来。 NavigableMap是JDK1.6新增的,在SortedMap的基础上,增加了一些“导航方法”(navigation methods)来返回与搜索目标最近的元素。
<Integer, String> sortedMap = new TreeMap<Integer, String>(); //程序初始化,将所有的服务器放入sortedMap中 static { getServer(String key) { //得到该key的hash值 int hash = getHash(key); //得到大于该Hash值的所有Map SortedMap <Integer, String> subMap = sortedMap.tailMap(hash); if(subMap.isEmpty()){ //如果没有比该key的hash 值大的,则从第一个node开始 Integer i = sortedMap.firstKey(); //返回对应的服务器 return sortedMap.get String> realNodes = new LinkedList<String>(); //虚拟节点,key表示虚拟节点的hash值,value表示虚拟节点的名称 private static SortedMap
, key, m.items[key]) } } 方案二:排序映射(使用sort包) package main import ( "fmt" "sort" ) type SortedMap struct { keys []int items map[int]string } func NewSortedMap() *SortedMap { return &SortedMap { keys: make([]int, 0), items: make(map[int]string), } } func (m *SortedMap) Set = append(m.keys, key) sort.Ints(m.keys) // 保持有序 } m.items[key] = value } func (m *SortedMap ) Get(key int) (string, bool) { val, exists := m.items[key] return val, exists } func (m *SortedMap
String, Long> sortMapByKey(Map<String, Long> oriMap, final boolean isAsc) { Map<String, Long> sortedMap null; while (iter.hasNext()) { tmpEntry = iter.next(); sortedMap.put (tmpEntry.getKey(), tmpEntry.getValue()); } } return sortedMap; Long> sortMapByValueLong(Map<String, Long> oriMap, final boolean isAsc) { Map<String, Long> sortedMap (tmpEntry.getKey(), tmpEntry.getValue()); } } return sortedMap;
<K,V> 发现NavigableMap继承了SortedMap,再看SortedMap的签名 SortedMap public interface SortedMap<K,V> extends Map <K,V> SortedMap就像其名字那样,说明这个Map是有序的。 此为,SortedMap中key的顺序性应该与equals方法保持一致。 介绍完了SortedMap,再来回到我们的NavigableMap上面来。 NavigableMap是JDK1.6新增的,在SortedMap的基础上,增加了一些“导航方法”(navigation methods)来返回与搜索目标最近的元素。