怎么才能让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(); } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!