猿问

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

要求是流式传输一组对象,筛选某些条件,并仅收集字符串集中的雇员 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>


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


绝地无双
浏览 89回答 3
3回答

繁星coding

用于将实例映射到相应的员工 ID。map()EmployeeSet<String>&nbsp;empIds&nbsp;= &nbsp;&nbsp;&nbsp;&nbsp;employees.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(x->&nbsp;x.getType()&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.map(Employee::getEmpId) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());

慕姐4208626

employees &nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;.filter(x->&nbsp;x.getType()&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;.map(Employee::getEmpId) &nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());将返回包含员工 ID 的 。Set<String>

qq_遁去的一_1

如果您还需要原始文件,则可以改用 。EmployeetoMapMap<String,&nbsp;Employee>&nbsp;employeesById&nbsp;=&nbsp;employees.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.filter(e->&nbsp;e.getType()&nbsp;==&nbsp;1) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toMap(Employee::getEmpId,&nbsp;Function.identity()));如果您需要稍后解决员工问题,这尤其有用。如果这不适用,则首选上述解决方案。此外,仍然可以通过以下方式获得:SetSet<String>&nbsp;employeeIds&nbsp;=&nbsp;employeesById.keySet();
随时随地看视频慕课网APP

相关分类

Java
我要回答