在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]