怎么才能让HashMap集合按照Key键来排序?
来源:2-1 案例:对整型进行排序
电磁护盾
2019-10-18 00:48:54
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import java.util.Map;
import java.util.Map.Entry;
public class T8_1 {
public static void main(String[] args) {
List<Integer> list=new ArrayList<>();
list.add(100);
list.add(100);
list.add(1);
list.add(2);
list.add(3);
list.add(6);
list.add(8);
list.add(7);
list.add(7);
list.add(8);
list.add(2);
list.add(2);
list.add(1);
list.add(2);
Collections.sort(list);
for(int q:list) {
System.out.println(q);
}
Map<Integer, Integer> map = new HashMap<>();
for (Integer inte : list) {
Integer num = map.get(inte);
map.put(inte, num == null ? 1 : num + 1);//如果没关联过,值就为1;如果关联过一次,值就为1+1=2
}
Set<Map.Entry<Integer, Integer>> set = map.entrySet();
Iterator<Map.Entry<Integer, Integer>> it = set.iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry =it.next();
System.out.println(entry.getKey() + ":" + entry.getValue()+ "次");
}
}
}
我想让这个“100:2次” 最后显示
1回答
好帮手慕酷酷
2019-10-18
同学你好,可以通过将map转换为list,然后重写compareTo方法来实现排序,
具体代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class EmployeeTest {
public static void main(String[] args) {
List<Integer> list = new ArrayList<>();
list.add(100);
list.add(100);
list.add(1);
list.add(2);
list.add(3);
list.add(6);
list.add(8);
list.add(7);
list.add(7);
list.add(8);
list.add(2);
list.add(2);
list.add(1);
list.add(2);
Collections.sort(list);
for (int q : list) {
System.out.println(q);
}
Map<Integer, Integer> map = new HashMap<>();
for (Integer inte : list) {
Integer num = map.get(inte);
map.put(inte, num == null ? 1 : num + 1);// 如果没关联过,值就为1;如果关联过一次,值就为1+1=2
}
List<Map.Entry<Integer, Integer>> infoIds = new ArrayList<Map.Entry<Integer, Integer>>(map.entrySet()); //将map转换为list进行排序
// 对HashMap中的key 进行排序
Collections.sort(infoIds, new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
return (o1.getKey()).compareTo(o2.getKey());
}
});
// 对HashMap中的key 进行排序后 显示排序结果
for (Map.Entry<Integer, Integer> mapping : infoIds) {
System.out.println(mapping.getKey() + ":" + mapping.getValue());
}
System.out.println();
}
}如果我的回答解决了你的疑惑,请采纳!祝学习愉快!