示例: 按值对地图进行排序
import java.util.*; public class Main { public static void main(String[] args) { // create a map and store elements to it LinkedHashMapcapitals = new LinkedHashMap(); capitals. put( "Nepal", "Kathmandu"); capitals. put( "India", "New Delhi"); capitals. put( "United States", "Washington"); capitals. put( "England", "London"); capitals. put( "Australia", "Canberra"); // call the sortMap() method to sort the map Map result = sortMap(capitals); for (Map.Entry en try : result. entrySet()) { System. out.print( "Key: " + entry. getKey()); System. out.println( " Value: " + entry. getValue()); } } public static LinkedHashMap sortMap(LinkedHashMap map) { List try string> > capitalList = new LinkedList(map. entrySet()); // call the sort() method of Collections Collections.sort(capitalList, (l1, l2)-> l1.getValue().compareTo(l2.getValue())); // create a new map LinkedHashMap result = new LinkedHashMap(); // get entry from list to the map for (Map.Entry en try : capitalList) { result. put(entry. getKey(), entry. getValue()); } return result; } }
输出
Key: Australia Value: Canberra
Key: Nepal Value: Kathmandu
Key: England Value: London
Key: India Value: new Delhi
Key: United States Value: Washington
在上面的程序中,我们创建了一个名为
capitals 的
LinkedHashMap
。该地图存储了国家及其各自的首都。
在这里,我们创建了一个
sortMap()
方法,该方法获取地图并返回排序后的地图。
在方法内部,我们首先从地图
capitals 创建了一个名为
capitalList 的列表。然后我们使用
Collections
的
sort()
方法对列表的元素进行排序。
sort()
方法接受两个参数: 要排序的列表和比较器。在我们的例子中,比较器是一个 lambda 表达式。
(l1, l2)-> l1.getValue().compareTo(l2.getValue())
这里,lambda 表达式采用列表的两个相邻元素(
l1 和
l2)。然后使用
getValue()
方法获取值,使用
compareTo()
方法比较两个值。
操作后,我们得到排序列表
capitalList。然后,我们只需将列表转换为名为
result 的
LinkedHashMap
并返回它。
回到
main()
方法,我们遍历地图中的每个项目并打印其键和值。