当前位置: 首页 > 知识库问答 >
问题:

Java8:使用流将一个映射转换为另一个映射

笪建章
2023-03-14

我需要将JavaHashMap转换为TreeMap的实例(包括映射内容)

HashMap<String, Object> src = ...;
TreeMap<String, Object> dest = src.entrySet().stream()
        .filter( ... )
        .collect(Collectors.toMap( ???, ???, ???, TreeMap::new));

我应该用什么来代替???来使此代码可编译?

共有1个答案

广献
2023-03-14

来自Collectors.tomap(...)Javadoc:

 * @param keyMapper a mapping function to produce keys
 * @param valueMapper a mapping function to produce values
 * @param mergeFunction a merge function, used to resolve collisions between
 *                      values associated with the same key, as supplied
 *                      to {@link Map#merge(Object, Object, BiFunction)}
 * @param mapSupplier a function which returns a new, empty {@code Map} into
 *                    which the results will be inserted

例如:

HashMap<String, Object> src = ...;
TreeMap<String, Object> dest = src.entrySet().stream()
      .filter( ... )
      .collect(Collectors.toMap(Map.Entry::getKey , Map.Entry::getValue, (a,b) -> a, TreeMap::new));
 类似资料:
  • 我刚刚开始看Java8,为了尝试lambdas,我想我应该尝试重写我最近写的一个非常简单的东西。我需要将一个字符串到列的映射转换为另一个字符串到列的映射,其中新映射中的列是第一个映射中列的防御副本。列具有复制构造函数。到目前为止我得到的最接近的数据是: 但我相信一定有更好的方法来做这件事,我会很感激一些建议。

  • 我希望使用stream和Java8中的其他选项,基于FieldError列表创建一个ErroDto列表。我用forEach有这个,但我想用stream和Map:

  • 问题内容: 我需要将Java转换为的实例(包括地图内容) 我应该怎么做才能使此代码可编译? 问题答案: 从Collectors.toMap(…)javadoc: 例如:

  • 所以,在Clojure中,我可以这样说... 我得到了一个新的数据向量。 对于 Java 8 流,是否有一些简单的?例如,我在 上没有看到接受流的构造函数,也没有在 中看到某种帮助程序函数,也没有看到流接口。

  • 我有两个不同标题的csv。 假设CSV1有一、二、三、四个标题,我想创建一个有五、六、七、八个标题的csv。 我很难编写代码来打开第一个CSV,然后创建第二个CSV。 这是我目前掌握的代码。

  • 问题内容: 我正在寻找有关如何在Python中将一个范围值转换为另一范围值的想法。我正在从事硬件项目,正在从可返回一定范围值的传感器读取数据,然后使用该数据来驱动需要不同范围值的执行器。 例如,假设传感器返回的值在1到512的范围内,并且执行器由5到10的值驱动。我想要一个函数,我可以传递一个值和两个范围并取回该值映射到第二个范围。如果这样的函数被命名,则可以这样使用: 在此示例中,我希望输出为,