转载:http://www.oschina.net/code/snippet_12_546?from=rss
package net.oschina.tester;
import java.util.*;
/**
* 根据 HashMap 的 value 进行排序
* @author Winter Lau
* @date 2009-11-24 下午01:35:37
*/
public class SortByValueDemo {
public static void main(String[] args) {
HashMap<String, Integer> datas = new HashMap<String, Integer>(){{
put("Winter Lau", 100);
put("Yier", 150);
put("Nothing", 30);
put("Zolo", 330);
}};
ByValueComparator bvc = new ByValueComparator(datas);
//第一种方法
TreeMap<String, Integer> sorted_map = new TreeMap<String, Integer>(bvc);
sorted_map.putAll(datas);
for(String name : sorted_map.keySet()){
System.out.printf("%s -> %d\n", name, datas.get(name));
}
//第二种方法
List<String> keys = new ArrayList<String>(datas.keySet());
Collections.sort(keys, bvc);
for(String key : keys) {
System.out.printf("%s -> %d\n", key, datas.get(key));
}
}
static class ByValueComparator implements Comparator<String> {
HashMap<String, Integer> base_map;
public ByValueComparator(HashMap<String, Integer> base_map) {
this.base_map = base_map;
}
public int compare(String arg0, String arg1) {
if (!base_map.containsKey(arg0) || !base_map.containsKey(arg1)) {
return 0;
}
if (base_map.get(arg0) < base_map.get(arg1)) {
return 1;
} else if (base_map.get(arg0) == base_map.get(arg1)) {
return 0;
} else {
return -1;
}
}
}
}
分享到:
相关推荐
在博文“HashMap通过对VALUE排序 源代码”中,作者可能详细介绍了如何实现上述方法,尤其是自定义Comparator来对HashMap的值进行排序。遗憾的是,由于没有提供具体的博客内容,我们无法给出更详细的源代码分析。不过...
如果需要频繁根据Value排序,使用TreeMap配合自定义Comparator可能是最佳选择。如果只是偶尔排序,转换为List并使用Collections.sort()也足够。务必注意,排序操作会改变原有的Map结构,如果需要保留原始Map,记得先...
先根据value的值从小到大排序,value相同再根据key的字母顺序来排序
HashMap是Java编程语言中常用的集合类之一,它属于哈希表数据结构,提供key-value的存储方式,并且具有快速查询的特性。然而,HashMap本身并不保证元素的顺序,特别是当涉及到遍历或输出HashMap的内容时,顺序可能会...
这段代码首先通过`entrySet().stream()`将Map转换为流,然后使用`sorted(Map.Entry.comparingByValue())`根据value进行排序。最后,使用`Collectors.toMap()`收集到一个新的LinkedHashMap中,以保持排序顺序。这里...
有时,我们需要根据 TreeMap 的 value 来进行排序。这时,我们可以借助于 Collections 的 sort(List<T> list, Comparator<? super T> c) 方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是,需要注意的...
Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...
Java HashMap的插图 Java HashMap ...插图7:使用TreeMap对未排序的HashMap进行排序 关于项目 该项目包括样本NetBeans项目,该项目说明了Java HashMap类。 关于开发商 示例NetBeans项目作为一个示例,
在Java编程中,HashMap是基于哈希表实现的Map接口的一个实现,它是Java集合框架的重要组成部分,提供了高效、快速的键值对存储和检索能力。HashMap允许任何类型的对象作为键和值,但要求键必须是唯一的,且键和值都...
这个实例代码展示了如何在Java中实现按value值对Map集合进行排序,这对于需要根据value值进行数据分析或其他处理的场景非常有用。请注意,这种方法返回的是一个已排序的Map.Entry数组,而不是一个新的Map,因此如果...
标题中提到的“JCF(List、Set、Map)学习,实现了,value>按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序;Set...
首先,标准的SortedMap接口是根据键(key)进行排序的,例如TreeMap就是一种按键升序排序的实现。因此,如果想按值排序,我们需要自定义排序逻辑。通常有两种主要的方法来实现这一目标: 方法一:使用自定义比较器...
在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...
然而,在某些场景下,我们可能需要将Map中的元素按照值(value)进行排序。本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构...
2. 对TreeMap的value进行排序:如果要根据value排序,可以直接操作Map的entrySet(),然后使用Collections.sort()方法,传入自定义比较器。但需要注意,这种方法会创建一个新的Entry列表,而不是直接修改原Map。 ```...
Java集合框架还提供了排序功能,允许开发者按照特定的顺序对集合中的元素进行排序。 - **自然排序**:使用元素的自然顺序,即实现Comparable接口的对象。 - **定制排序**:使用Comparator接口来定义元素之间的比较...
- 当需要根据value进行排序时,由于Map本身并不直接支持value排序,我们需要使用其他方法。一种常见做法是先将Map的entrySet转换为List,然后使用`Collections.sort()`方法,传入一个Comparator来按value排序。 - ...
1. **TreeMap** 是一个基于红黑树实现的Map,它会自动根据键的自然顺序或自定义比较器进行排序。例如: ```java import java.util.TreeMap; TreeMap, Integer> treeMap = new TreeMap(); treeMap.put("apple", 1);...
为了实现排名,我们需要将HashMap转换为List,并根据值(分数)进行排序。这可以通过Java 8的Stream API实现: ```java List, Integer>> sortedEntries = gameRanking.entrySet().stream() .sorted(Map.Entry....
在Java编程语言中,Map接口是用于存储键值对数据结构的抽象概念,它不同于数组,数组通过下标访问元素,而Map则是通过键(key)来查找对应的值(value)。HashMap和TreeMap是Java中两种常用的Map实现,它们各自具有...