当前位置: 首页 > 面试题库 >

Java8:HashMap 到HashMap 使用Stream / Map-Reduce / Collector

曹均
2023-03-14
问题内容

我知道如何ListY-> “转换”一个简单的Java Z,即:

List<String> x;
List<Integer> y = x.stream()
        .map(s -> Integer.parseInt(s))
        .collect(Collectors.toList());

现在,我想对地图进行基本相同的操作,即:

INPUT:
{
  "key1" -> "41",    // "41" and "42"
  "key2" -> "42      // are Strings
}

OUTPUT:
{
  "key1" -> 41,      // 41 and 42
  "key2" -> 42       // are Integers
}

解决方案不应限于String-> Integer。就像List上面的示例一样,我想调用任何方法(或构造函数)。


问题答案:
Map<String, String> x;
Map<String, Integer> y =
    x.entrySet().stream()
        .collect(Collectors.toMap(
            e -> e.getKey(),
            e -> Integer.parseInt(e.getValue())
        ));

它不如列表代码那么好。您不能Map.Entrymap()通话中构造new ,因此工作会混入collect()通话中。



 类似资料:
  • 我知道如何从->“转换”一个简单的Java,即: 现在我想用一张地图做基本相同的操作,即: 解决方案不应局限于->。就像上面的示例一样,我希望调用任何方法(或构造函数)。

  • 我是Java 8流的新手。请提供建议,如何转换流<代码>流 例如,我在代码中有一些流: 我怎么能做这样的事 ? 对不起,我的英语不好。

  • 我有一个HashMap,我需要使用一些函数对其进行筛选: 上述代码中的错误是变量的声明类型。应该是而不是。 所以现在的功能代码是:

  • 问题内容: 让我们考虑一个哈希图 我在两个哈希图中都插入了一些值。 例如, Q1)现在我想在哈希图中的键上应用一个筛选条件,并检索相应的值(列表)。 例如:这里我的查询是key = 1,输出应该是“ list1” 我写 但是我不知道如何检索列表作为此流操作的输出。 Q2)同样,我想对hashmap中的键应用过滤条件,并检索相应的列表列表。 例如:这里我的查询是key = 1%(即key可以是1,1

  • 根据Java8中的这个链接,为了避免在map()中的冲突,使用平衡树来实现,而不是。 那么,如果: > (和其他映射()都是使用自平衡树实现的,因为最坏情况下的可访问性是相同的 我可以实现如下: 除了排序和可访问性,的其他属性是什么?