`
yeshaoting
  • 浏览: 685833 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[转载]Java 根据 HashMap 的 value 进行排序

    博客分类:
  • J2SE
 
阅读更多

 

转载: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排序 源代码

    在博文“HashMap通过对VALUE排序 源代码”中,作者可能详细介绍了如何实现上述方法,尤其是自定义Comparator来对HashMap的值进行排序。遗憾的是,由于没有提供具体的博客内容,我们无法给出更详细的源代码分析。不过...

    Java Map 按照Value排序的实现方法

    如果需要频繁根据Value排序,使用TreeMap配合自定义Comparator可能是最佳选择。如果只是偶尔排序,转换为List并使用Collections.sort()也足够。务必注意,排序操作会改变原有的Map结构,如果需要保留原始Map,记得先...

    java程序-HashMap排序

    先根据value的值从小到大排序,value相同再根据key的字母顺序来排序

    HASHMAP排序功能描述

    HashMap是Java编程语言中常用的集合类之一,它属于哈希表数据结构,提供key-value的存储方式,并且具有快速查询的特性。然而,HashMap本身并不保证元素的顺序,特别是当涉及到遍历或输出HashMap的内容时,顺序可能会...

    对map里面的value进行排序

    这段代码首先通过`entrySet().stream()`将Map转换为流,然后使用`sorted(Map.Entry.comparingByValue())`根据value进行排序。最后,使用`Collectors.toMap()`收集到一个新的LinkedHashMap中,以保持排序顺序。这里...

    对Map按key和value分别排序

    有时,我们需要根据 TreeMap 的 value 来进行排序。这时,我们可以借助于 Collections 的 sort(List&lt;T&gt; list, Comparator&lt;? super T&gt; c) 方法,该方法根据指定比较器产生的顺序对指定列表进行排序。但是,需要注意的...

    java8 stream 操作map根据key或者value排序的实现

    Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现 Java8 中的 Stream 操作为开发者提供了简洁高效的数据处理方式,今天我们将介绍如何使用 Java8 Stream 操作 Map 根据 Key 或 Value 排序的实现。 Map 根据 ...

    java-hashmap:Java HashMap的插图

    Java HashMap的插图 Java HashMap ...插图7:使用TreeMap对未排序的HashMap进行排序 关于项目 该项目包括样本NetBeans项目,该项目说明了Java HashMap类。 关于开发商 示例NetBeans项目作为一个示例,

    JAVA中HashMap的用法.docx

    在Java编程中,HashMap是基于哈希表实现的Map接口的一个实现,它是Java集合框架的重要组成部分,提供了高效、快速的键值对存储和检索能力。HashMap允许任何类型的对象作为键和值,但要求键必须是唯一的,且键和值都...

    java的Map集合中按value值进行排序输出的实例代码

    这个实例代码展示了如何在Java中实现按value值对Map集合进行排序,这对于需要根据value值进行数据分析或其他处理的场景非常有用。请注意,这种方法返回的是一个已排序的Map.Entry数组,而不是一个新的Map,因此如果...

    JCF(List、Set、Map)学习,实现了<key,value>按value排序噢

    标题中提到的“JCF(List、Set、Map)学习,实现了,value&gt;按value排序”是一个关键点,我们将深入探讨这个话题。 首先,让我们了解List、Set和Map的区别。List是有序的集合,允许重复元素,并且可以保持插入顺序;Set...

    浅谈Java之Map 按值排序 (Map sort by value)

    首先,标准的SortedMap接口是根据键(key)进行排序的,例如TreeMap就是一种按键升序排序的实现。因此,如果想按值排序,我们需要自定义排序逻辑。通常有两种主要的方法来实现这一目标: 方法一:使用自定义比较器...

    java 中 TreeMap排序

    在Java编程语言中,`TreeMap`是一种基于红黑树数据结构实现的键值对容器,与`HashMap`不同,`TreeMap`自动按照键的自然顺序或者自定义的比较器进行排序。当我们需要存储的数据有特定的排序需求时,`TreeMap`便成为一...

    Java Map 按值排序

    然而,在某些场景下,我们可能需要将Map中的元素按照值(value)进行排序。本文将详细介绍如何在Java中实现Map按值排序的几种方法。 1. 使用TreeMap TreeMap是Java中实现Map接口的一个类,它内部使用红黑树数据结构...

    java如何对map进行排序详解(map集合的使用)

    2. 对TreeMap的value进行排序:如果要根据value排序,可以直接操作Map的entrySet(),然后使用Collections.sort()方法,传入自定义比较器。但需要注意,这种方法会创建一个新的Entry列表,而不是直接修改原Map。 ```...

    Java集合排序及java集合类详解.pdf

    Java集合框架还提供了排序功能,允许开发者按照特定的顺序对集合中的元素进行排序。 - **自然排序**:使用元素的自然顺序,即实现Comparable接口的对象。 - **定制排序**:使用Comparator接口来定义元素之间的比较...

    Java Map 按key排序和按Value排序的实现方法

    - 当需要根据value进行排序时,由于Map本身并不直接支持value排序,我们需要使用其他方法。一种常见做法是先将Map的entrySet转换为List,然后使用`Collections.sort()`方法,传入一个Comparator来按value排序。 - ...

    java map 集合 排序

    1. **TreeMap** 是一个基于红黑树实现的Map,它会自动根据键的自然顺序或自定义比较器进行排序。例如: ```java import java.util.TreeMap; TreeMap, Integer&gt; treeMap = new TreeMap(); treeMap.put("apple", 1);...

    用HashMap写的一个小Demo用来写游戏排名的一种方法

    为了实现排名,我们需要将HashMap转换为List,并根据值(分数)进行排序。这可以通过Java 8的Stream API实现: ```java List, Integer&gt;&gt; sortedEntries = gameRanking.entrySet().stream() .sorted(Map.Entry....

    Java中HashMap和TreeMap的区别深入理解

    在Java编程语言中,Map接口是用于存储键值对数据结构的抽象概念,它不同于数组,数组通过下标访问元素,而Map则是通过键(key)来查找对应的值(value)。HashMap和TreeMap是Java中两种常用的Map实现,它们各自具有...

Global site tag (gtag.js) - Google Analytics