当前位置: 首页 > 编程笔记 >

在Java中,如何使用lambda同时按键和值对Map进行排序?

常波
2023-03-14
本文向大家介绍在Java中,如何使用lambda同时按键和值对Map进行排序?,包括了在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]
 类似资料:
  • 问题内容: 我有一个同时包含键和值的字符串的Map。 数据如下: 我想根据其键对地图进行排序。因此,最后,我将拥有..依此类推。 最终,我试图从该Map中获取两个字符串。 第一个字符串:问题(顺序为1 ..10) 第二个字符串:答案(与问题的顺序相同) 现在,我有以下内容: 这使我的问题成串出现,但顺序不正确。 问题答案: 简短答案 使用。这正是它的目的。 如果将此地图传递给你,并且你无法确定类型

  • 问题内容: 这是一个非常基本的问题,我对Java并不是很好。我有一个Map,我想按排序顺序获取列表或某些键,以便可以对其进行迭代。 问题答案: 使用,这是接口的实现。它按排序顺序显示其密钥。 如果您使用的另一个Map实现没有按照您的喜好进行排序,则可以将其传递给的构造函数,以使用排序键创建新的Map。 一个与实现接口的任何类型的键一起使用的键,将它们按“自然”顺序放置。对于不需要的键或不需要的自然

  • 问题内容: 我是Java 8的新手,不确定如何使用流及其排序方法。如果我的地图如下,如何使用Java 8按值对地图进行排序以仅获取前10个条目。 我知道在Java 8之前,我们可以按以下链接进行排序:http://codingdict.com/questions/116310 问题答案: 您可以随时开始阅读文档和一些 教程。 参考 http://www.leveluplunch.com/java/

  • 考虑下面的哈希图: 具有诸如 我需要按值对hashmap进行降序排序,但如果值相等,则按键进行升序排序: 到目前为止,我试着分别按键排序,然后按值排序,但我不相信这种方法。除了创建更多的hashmaps之外,还有什么好方法呢?

  • 我想按值长度对Map进行排序。例如,我有这样的代码: 结果是: 所以我想做的是按值长度对这个Map进行排序,所以它返回:

  • 问题内容: 有人可以给我看一个简单的示例,如何使用新的lambda语法在Java 8中按字母顺序排序。 问题答案: 对于字符串,这将工作