要以降序打印HashMap值,但如果两个或多个值相等,则按键升序打印,可以按照以下步骤进行:
以下是示例代码:
import java.util.*;
public class HashMapPrint {
public static void main(String[] args) {
// 创建HashMap对象并添加键值对
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "Apple");
hashMap.put(2, "Banana");
hashMap.put(3, "Orange");
hashMap.put(4, "Grape");
hashMap.put(5, "Apple");
// 将HashMap的entrySet转换为List集合
List<Map.Entry<Integer, String>> list = new ArrayList<>(hashMap.entrySet());
// 对值进行降序排序
Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
public int compare(Map.Entry<Integer, String> o1, Map.Entry<Integer, String> o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
// 创建LinkedHashMap对象存储排序后的键值对
LinkedHashMap<Integer, String> sortedMap = new LinkedHashMap<>();
for (Map.Entry<Integer, String> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
// 对键进行升序排序
TreeSet<Integer> sortedKeys = new TreeSet<>(sortedMap.keySet());
// 按照升序打印键值对
for (Integer key : sortedKeys) {
System.out.println(key + ": " + sortedMap.get(key));
}
}
}
这段代码会按照降序打印HashMap的值,如果两个或多个值相等,则按键升序打印。你可以根据需要修改HashMap的键值对,运行代码并观察结果。
领取专属 10元无门槛券
手把手带您无忧上云