为了账号安全,请及时绑定邮箱和手机立即绑定

如何流式传输和收集来自对象集合的实例方法结果?

如何流式传输和收集来自对象集合的实例方法结果?

绝地无双 2022-09-22 10:42:23

要求是流式传输一组对象,筛选某些条件,并仅收集字符串集中的雇员 ID


class Employee {

    private String empId;

    private int type;


    public int getType() {

        return type;

    }


    public String getEmpId() {

        return empId;

    }

}

在筛选以下语句时


employees.stream().filter(x-> x.getType() == 1).collect(Collectors.toSet());

返回一个,而不是我只想收集empId,即Set<Employee>Set<String>


注意:不能使实例变量成为私有变量以外的任何内容。


查看完整描述

3 回答

?
繁星coding

TA贡献1441条经验 获得超4个赞

用于将实例映射到相应的员工 ID。map()Employee

Set<String> empIds =
    employees.stream()
             .filter(x-> x.getType() == 1)
             .map(Employee::getEmpId)
             .collect(Collectors.toSet());


查看完整回答
反对 回复 2022-09-22
?
慕姐4208626

TA贡献1517条经验 获得超7个赞

employees
   .stream()
   .filter(x-> x.getType() == 1)
   .map(Employee::getEmpId)
   .collect(Collectors.toSet());

将返回包含员工 ID 的 。Set<String>


查看完整回答
反对 回复 2022-09-22
?
qq_遁去的一_1

TA贡献1402条经验 获得超7个赞

如果您还需要原始文件,则可以改用 。EmployeetoMap

Map<String, Employee> employeesById = employees.stream()
        .filter(e-> e.getType() == 1)
        .collect(Collectors.toMap(Employee::getEmpId, Function.identity()));

如果您需要稍后解决员工问题,这尤其有用。如果这不适用,则首选上述解决方案。

此外,仍然可以通过以下方式获得:Set

Set<String> employeeIds = employeesById.keySet();


查看完整回答
反对 回复 2022-09-22

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信