新程序员,第一次感觉要疯,求看代码

snakec0047 2015-04-21 05:50:11

网上找的原码,功能是根据value的值来对map进行排序,代码看不懂,我现在需要这个功能,
但是我传进去的map键和值都是Integer,请问这个代码需要怎么改才能实现

(注:我已自行改过如下,就是把所有String都改成了Integer,还有try里面的geInt方法去除,但改过之后不能实现排序功能)
...全文
238 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥王之锤 2015-04-21
  • 打赏
  • 举报
回复
package test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

public class MapSortDemo {
	public static void main(String[] args) {
		Map<Integer, Integer> map = new TreeMap<Integer, Integer>();
		map.put(3, 8);
		map.put(2, 3);
		map.put(44, 89);
		map.put(232, 33);
		Map<Integer, Integer> resultMap = sortMapByValue(map); // 按Value进行排序
		for (Map.Entry<Integer, Integer> entry : resultMap.entrySet()) {
			System.out.println(entry.getKey() + " " + entry.getValue());
		}
	}

	public static Map<Integer, Integer> sortMapByValue(Map<Integer, Integer> map) {
		if (map == null || map.isEmpty()) {
			return null;
		}
		//排序value
		Map<Integer, Integer> sortedMap = new LinkedHashMap<Integer, Integer>();
		List<Map.Entry<Integer, Integer>> entryList = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet());
		Collections.sort(entryList, new Comparator<Map.Entry<Integer, Integer>>() {
			public int compare(Entry<Integer, Integer> left, Entry<Integer, Integer> right) {
				return left.getValue().compareTo(right.getValue());
			}
		});
		//按照value创建map
		Iterator<Map.Entry<Integer, Integer>> iter = entryList.iterator();
		Map.Entry<Integer, Integer> tmpEntry = null;
		while (iter.hasNext()) {
			tmpEntry = iter.next();
			sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
		}
		return sortedMap;
	}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧