您的位置:首页 > 其它

hashmap的两种排序方式

2013-09-05 22:37 309 查看
Map<String, Integer> map = new HashMap<String, Integer>();

map.put("d", 2);

map.put("c", 1);

map.put("b", 1);

map.put("a", 3);

List<Map.Entry<String, Integer>> infoIds =

new ArrayList<Map.Entry<String, Integer>>(map.entrySet());

//排序前

for (int i = 0; i < infoIds.size(); i++) {

String id = infoIds.get(i).toString();

System.out.println(id);

}

//d 2

//c 1

//b 1

//a 3

//排序

Collections.sort(infoIds, new Comparator<Map.Entry<String, Integer>>() {

public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {

//return (o2.getValue() - o1.getValue());

return (o1.getKey()).toString().compareTo(o2.getKey());

}

});

//排序后

for (int i = 0; i < infoIds.size(); i++) {

String id = infoIds.get(i).toString();

System.out.println(id);

}

//根据key排序

//a 3

//b 1

//c 1

//d 2

//根据value排序

//a 3

//d 2

//b 1

//c 1

package com.huawei.test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.LinkedHashMap;

import java.util.Map;

import java.util.Map.Entry;

public class Test {

/**

* @param args

*/

public static void main(String[] args) {

LinkedHashMap<String,Integer> map=new LinkedHashMap<String,Integer>();

map.put("a", 1);

map.put("b", 1);

map.put("c", 3);

map.put("d", 4);

map.put("e", 3);

ArrayList<Map.Entry<String, Integer>> list=new ArrayList<Map.Entry<String, Integer>>(map.entrySet());

Collections.sort(list, new Comparator<Map.Entry<String, Integer>>(){

@Override

public int compare(Entry<String, Integer> o1,

Entry<String, Integer> o2) {

// TODO Auto-generated method stub

return o2.getValue()-o1.getValue();

}

});

for(int i=0;i<list.size();i++){

Entry<String,Integer> entry=list.get(i);

System.out.println(entry.getKey()+" "+entry.getValue());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: