在Java中,如何使用lambda同时按键和值对Map进行排序?
Map接口实现了Collection接口,该接口提供了Map数据结构的功能。映射不包含任何重复的键,并且每个键都与一个值相关联。我们可以使用与它们关联的键来访问和修改值。
在以下两个示例中,我们可以借助lambda表达式按键和值对Map进行排序。
使用Key对Map进行排序的示例
import java.util.*; import java.util.stream.*; public class MapSortUsingKeyTest { public static void main(String args[]) { // 根据键对映射进行排序 Map<Integer, String> map = new HashMap<Integer, String>(); map.put(2, "India"); map.put(5, "Australia"); map.put(3, "England"); map.put(1, "Newzealand"); map.put(4, "Scotland"); Map<Integer, String> sortedMap = map.entrySet().stream() .sorted(Map.Entry.comparingByKey()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new)); System.out.println("Sorted Map: " + Arrays.toString(sortedMap.entrySet().toArray())); } }
输出结果
Sorted Map: [1=Newzealand, 2=India, 3=England, 4=Scotland, 5=Australia]
使用值(Value)对Map进行排序的示例
import java.util.*; import java.util.stream.*; public class MapSortUsingValueTest { public static void main(String args[]) { //根据它们的值对映射进行排序 Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "Jaidev"); map.put(2, "Adithya"); map.put(3, "Vamsi"); map.put(4, "Krishna"); map.put(5, "Chaitanya"); Map<Integer, String> sortedMap = map.entrySet().stream() .sorted(Map.Entry.comparingByValue()) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e2, LinkedHashMap::new)); System.out.println("Sorted Map: " + Arrays.toString(sortedMap.entrySet().toArray())); } }
输出结果
Sorted Map: [2=Adithya, 5=Chaitanya, 1=Jaidev, 4=Krishna, 3=Vamsi]