`
yeshaoting
  • 浏览: 666932 次
  • 性别: 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;
			}
		}
	}

}
 

 

 

分享到:
评论

相关推荐

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

    Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下

    java程序-HashMap排序

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

    java-hashmap:Java HashMap的插图

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

    java summary(java笔记)

    学习java的一些笔记和个人总结 9、Collection 和 Collections的区别。  Collection是集合类的上级接口,继承与他的接口主要有Set 和List.。Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种...

    java中set、list和map的使用方法实例

    // java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器...另包含一篇网文:在java中使用TreeMap进行中文排序

    Java用Comparator来排序.pdf

    "I am here, and the value of X is {} and Y is {}", new Object[]{calcX(), calcY()}); } 应用的性能取决于它的代码如何编写。例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环...

    JAVA面试题最全集

    50.JAVA语言如何进行异常处理,关键字:thorws,throw,try,catch,finally 51.Object类(或者其子类)的finalize()方法在什么情况下被调用? 52.一个“.java”原文件中是否可以包括多个类(不是内部类)? 53.掌握...

    java 面试题 总结

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而...

    借助JAVA的api的方法写一个排序的例子.pdf

    "I am here, and the value of X is {} and Y is {}", new Object[]{calcX(), calcY()}); } 应用的性能取决于它的代码如何编写。例如,如果程序循环遍历数组中的所有元素,JVM 就可以优化数组的边界检查,使循环...

    java遍历特例

    java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); ...

    如何遍历Map-Java版源码

    博文《Java中如何遍历map》源码。可以直接粘贴博文中源码 也可以下载它,免费了。

    Java容器.xmind

    对键进行排序 HashTable 标记: class Properties 标记: class 线程安全,速度慢,不允许存放null键,null值,已被HashMap替代。 Collections 标记: 均以synchronized实现, 性能没用提高 synchronizedCollection...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    get()方法-根据Key从HashMap中取Value 66 HashMap的特点总结: 66 【集合】HashMap在并发场景下的问题和解决方案 67 多线程put后可能导致get死循环 67 多线程put的时候可能导致元素丢失 68 解决方案 68 【集合】...

    超级有影响力霸气的Java面试题大全文档

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而...

    关于JAVA面试的100题及其答案

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而...

    达内 coreJava 习题答案

    import java.util.Scanner; class Bissextile{ public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in...

    Java中的Map接口——学习小结

    Map是Java集合中的三大接口之一,其存储形式为键(Key)值(Value)对,是程序开发中大部分数据存储时 所采用的存储形式。如:MySQL、JSON、XML。 Map形式称为双边队列,即Key与Value互相对应。但需要注意:Key是...

    一个java正则表达式工具类源代码.zip(内含Regexp.java文件)

    以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 ...

    :open_book:我想收集大邱软件高中学生学习时遇到的试验和错误,以便他们可以轻松解决错误。-JavaScript开发

    Go Go运行,构建和安装Go模块之间的差异Gorm Java入门Java如何使用Java HashMap如何使用Java Set如何使用Java提供的Log函数如何使用Java的this关键字Java String.valueOf和toString()差异Java序列化和反序列化...

Global site tag (gtag.js) - Google Analytics