【问题标题】:How to use stream to get id from array of object in List? [duplicate]如何使用流从 List 中的对象数组中获取 id? [复制]
【发布时间】:2020-11-17 19:36:15
【问题描述】:

假设我在 java 中有包含 ids 和 name 的对象列表,我怎样才能只选择 id 并将其保存到另一个列表中

详情[{id:1,name:brown},{id:2,white},{id:3,name:black}]

我想要的是将所有的 id 放入新的 List 中。

我尝试的是

List<String> ids = details.stream().filter(item -> item.getId()).collect(Collectors.toList());

这会在 item.getId() 附近引发语法错误

【问题讨论】:

标签: java java-stream


【解决方案1】:

您需要使用.map,而不是使用.filter

为了使您的代码更简洁,您可以将item -&gt; item.getId() 替换为方法引用:Item::getId

这将是最终结果:

List<String> ids = details.stream()
        .map(Item::getId)
        .collect(Collectors.toList());

【讨论】:

  • 我真的没明白
  • .map 方法用于转换对象。这就是您所需要的,因为您正在将 Item 对象转换为字符串(id)。方法引用只是以更简洁的方式表达 lambda 表达式的一种方式。
【解决方案2】:

该示例适合您,

        Employee emp1 = new Employee(1,"Ally");
        Employee emp2 = new Employee(2,"Billy");
        ArrayList<Employee> employeeList = new ArrayList<>(Arrays.asList(emp1,emp2));

        List<Integer> collect = employeeList.stream()
                                            .map(Employee::getId)
                                            .collect(Collectors.toList());
        System.out.println("collect = " + collect);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 2023-01-25
    • 2023-01-22
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多