要求是流式傳輸一組對象,篩選某些條件,并僅收集字符串集中的雇員 IDclass 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貢獻1797條經驗 獲得超4個贊
用于將實例映射到相應的員工 ID。map()
Employee
Set<String> empIds = employees.stream() .filter(x-> x.getType() == 1) .map(Employee::getEmpId) .collect(Collectors.toSet());

慕姐4208626
TA貢獻1852條經驗 獲得超7個贊
employees .stream() .filter(x-> x.getType() == 1) .map(Employee::getEmpId) .collect(Collectors.toSet());
將返回包含員工 ID 的 。Set<String>

qq_遁去的一_1
TA貢獻1725條經驗 獲得超8個贊
如果您還需要原始文件,則可以改用 。Employee
toMap
Map<String, Employee> employeesById = employees.stream() .filter(e-> e.getType() == 1) .collect(Collectors.toMap(Employee::getEmpId, Function.identity()));
如果您需要稍后解決員工問題,這尤其有用。如果這不適用,則首選上述解決方案。
此外,仍然可以通過以下方式獲得:Set
Set<String> employeeIds = employeesById.keySet();
添加回答
舉報
0/150
提交
取消