java - 使用 Java8 流将 Object 缩减为 Map

标签 java java-8 java-stream

如果我有一个类似的类

public class Property {
    private String id;
    private String key;
    private String value;

    public Property(String id, String key, String value) {
        this.id = id;
        this.key = key;
        this.value = value;
    }
    //getters and setters
}

我有一个 Set<Property> properties我想将一些属性简化为 Map仅来自这些 Property 的键和值对象。

我的大多数解决方案最终都不那么文雅。我知道有一个方便的方法可以用 Collector 来做这些但我对 Java8 还不是很熟悉。有什么建议吗?

最佳答案

    Set<Property> properties = new HashSet<>();
    properties.add(new Property("0", "a", "A"));
    properties.add(new Property("1", "b", "B"));
    Map<String, String> result = properties.stream()
        .collect(Collectors.toMap(p -> p.key, p -> p.value));
    System.out.println(result);

关于java - 使用 Java8 流将 Object 缩减为 Map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30794412/

相关文章:

java - 我如何告诉 Beaver 忽略减少/减少冲突?

java - 如何修改导丝样式表

java - 在 Java 8 上从源代码编译 Groovy 进行打包是否有令人信服的案例?

java-8 - 具有值映射函数生成列表的java 8列表分组

java - Spring DeferredResult setResult 导致 404

java - 为什么 Stream() 在 Scala 中不像在 Java 中那样工作?是否有其他 API 与 Stream() API 功能相同?

java-8 - 如何从 Map<Date, List<Integer>> 中找到抽奖中每个数字的最新日期

java - 列表中的映射 - 如何使用 Stream 进行迭代

java - 检查字符串是否包含列表中的任何字符串

java - Ehcache 与静态 map 缓存实现