SortedMap接口主要提供有序的Map实现。
Map的主要实现有HashMap,TreeMap,HashTable,LinkedHashMap。
TreeMap实现了SortedMap接口,保证了有序性。默认的排序是根据key值进行升序排序,也可以重写comparator方法来根据value进行排序。
HashMap与TreeMap的比较
public class SortedMapTest2 {
public static void main(String[] args) {
Map<String,Object> hashMap = new HashMap<String,Object>();
hashMap.put("1", "a");
hashMap.put("5", "b");
hashMap.put("2", "c");
hashMap.put("4", "d");
hashMap.put("3", "e");
Set<Entry<String, Object>> entry = hashMap.entrySet();
for(Entry<String, Object> temp : entry){
System.out.println("hashMap:"+temp.getKey()+" 值"+temp.getValue());
}
System.out.println("\n");
SortedMap<String,Object> sortedMap = new TreeMap<String,Object>();
sortedMap.put("1", "a");
sortedMap.put("5", "b");
sortedMap.put("2", "c");
sortedMap.put("4", "d");
sortedMap.put("3", "e");
Set<Entry<String, Object>> entry2 = sortedMap.entrySet();
for(Entry<String, Object> temp : entry2){
System.out.println("sortedMap:"+temp.getKey()+" 值"+temp.getValue());
}
}
}
运算的结果为
hashMap:1 值a
hashMap:2 值c
hashMap:3 值e
hashMap:4 值d
hashMap:5 值b
sortedMap:1 值a
sortedMap:2 值c
sortedMap:3 值e
sortedMap:4 值d
sortedMap:5 值b
看上去还以为HashMap也保证了有序性,其实是随机的,如果值设置的复杂一点,如下例:
public class SortedMapTest3 {
public static void main(String[] args) {
Map<String,Object> hashMap = new HashMap<String,Object>();
hashMap.put("1b", "a");
hashMap.put("2", "b");
hashMap.put("4b", "d");
hashMap.put("3", "c");
hashMap.put("2b", "d");
hashMap.put("3b", "c");
Set<Entry<String, Object>> entry = hashMap.entrySet();
for(Entry<String, Object> temp : entry){
System.out.println("hashMap:"+temp.getKey()+" 值"+temp.getValue());
}
System.out.println("\n");
SortedMap<String,Object> sortedMap = new TreeMap<String,Object>();
sortedMap.put("1b", "a");
sortedMap.put("2", "b");
sortedMap.put("4b", "d");
sortedMap.put("3", "c");
sortedMap.put("2b", "d");
sortedMap.put("3b", "c");
Set<Entry<String, Object>> entry2 = sortedMap.entrySet();
for(Entry<String, Object> temp : entry2){
System.out.println("sortedMap:"+temp.getKey()+" 值"+temp.getValue());
}
}
}
运算的结果是:
hashMap:2b 值d
hashMap:1b 值a
hashMap:2 值b
hashMap:3 值c
hashMap:4b 值d
hashMap:3b 值c
sortedMap:1b 值a
sortedMap:2 值b
sortedMap:2b 值d
sortedMap:3 值c
sortedMap:3b 值c
sortedMap:4b 值d
很显然只有TreeMap保证了有序性。
那如果想要根据value值来进行排序
public class SortedMapTest {
public static void main(String[] args) {
SortedMap<String,String> sortedMap = new TreeMap<String,String>();
sortedMap.put("1", "a");
sortedMap.put("5", "b");
sortedMap.put("2", "c");
sortedMap.put("4", "d");
sortedMap.put("3", "e");
Set<Entry<String, String>> entry2 = sortedMap.entrySet();
for(Entry<String, String> temp : entry2){
System.out.println("修改前 :sortedMap:"+temp.getKey()+" 值"+temp.getValue());
}
System.out.println("\n");
//这里将map.entrySet()转换成list
List<Map.Entry<String,String>> list =
new ArrayList<Map.Entry<String,String>>(entry2);
Collections.sort(list, new Comparator<Map.Entry<String,String>>(){
@Override
public int compare(Entry<String, String> o1, Entry<String, String> o2) {
// TODO Auto-generated method stub
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String,String> temp :list){
System.out.println("修改后 :sortedMap:"+temp.getKey()+" 值"+temp.getValue());
}
}
}
运行结果为:
修改前 :sortedMap:1 值a
修改前 :sortedMap: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
————————————————
版权声明:本文为CSDN博主「石硕页」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014209205/article/details/80480621
相关推荐
SortedMap接口、HashMap类、Hashtable类、Properties类、Map.Entry接口、WeakHashMap类、IndentityHashMap类 集合输出: Iterator、ListIterator、foreach、废除的Enumeration Collections工具类 Comparable接口、...
java集合框架 3.6. LinkedHashSet类 ...4.2. SortedMap接口 4.3. AbstractMap抽象类 4.4. HashMap类和TreeMap类 4.4.1. HashMap类 4.4.2. TreeMap类 4.5. LinkedHashMap类 4.6. WeakHashMap类 4.6. IdentityHashMap类
031313_【第13章:Java类集】_SortedMap类笔记.pdf 031314_【第13章:Java类集】_集合工具类:Collections笔记.pdf 031315_【第13章:Java类集】_Stack类笔记.pdf 031316_【第13章:Java类集】_属性类:Properties...
7.6.2 SortedMap接口和TreeMap实现类 276 7.6.3 WeakHashMap实现类 279 7.6.4 IdentityHashMap实现类 280 7.6.5 EnumMap实现类 281 7.7 HashSet和HashMap的性能选项 282 7.8 操作集合的工具类:Collections 283...
Java的不可变集合 概述 Java库的不可变集合(JImmutable ... JImmutables.sortedMap() JImmutables.sortedMap(Comparator) LinkedHashMap JImmutableMap JImmutables.insertOrderMap() 哈希集 JImmutableSet
3. Map的遍历方式 4. Map接口主要方法 5. SortedMap接口主要方法 6. NavigableMap接口主要方法 8. 参考 3. Map的遍
java-basicJava基础的一些测试:例如 ...> Deque(双端队列):LinkedBlockingDequeMap(散列接口)-> SortedMap(可排序的map)==============>>接口方法?1.1Queue队列接口: 入队:add() offer() 出队:remove() pee
集合类Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。 Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。 List:是一个有序的集合,可以包含重复的元素。提供了按索引访问的...
SortedMap 标记: class TreeMap 对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 Collections 标记: 均以synchronized实现, 性能...
线程安全的对象在其内部实现同步,因此多个接口可以通过公有接口来进行访问 保护对象:被保护的对象只能通过特定的锁来访问 将对象封装到线程安全对象中 由特定锁保护 保护对象的方法 对象的...
TreeMap是一种基于红黑树实现的有序映射(SortedMap)。它实现了NavigableMap接口,可以按照键的自然顺序或自定义排序规则对键值对进行排序和访问。
KCache-由Apache Kafka支持的内存中缓存 KCache是一个客户端库,提供了由...KafkaCache的实例实现java.util.SortedMap接口。 这是一个示例用法: import io.kcache.* ; String bootstrapServers = " localhost:90
14.7.5 SortedMap接口与TreeMap类 305 14.7.6 映射的遍历 308 14.8 栈在Java中的实现 309 14.8.1 Stack类的使用 309 14.8.2 Deque接口的使用 310 14.8.3 利用栈计算数学表达式 311 14.9 集合元素的常用...
java集合框架Collection collection是集合框架的根,定义了集合操作的通用行为 继他之后存在四个子接口 list,map,set,queue list是有序collection接口 实现: arraylist是基于数组实现list接口的 线程不同步 ...