Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从对象集合中流式传输和收集实例方法结果?_Java_Java Stream - Fatal编程技术网

Java 如何从对象集合中流式传输和收集实例方法结果?

Java 如何从对象集合中流式传输和收集实例方法结果?,java,java-stream,Java,Java Stream,需求是流式传输一组对象,根据某些条件进行过滤,并在一组字符串中仅收集employeeID class Employee { private String empId; private int type; public int getType() { return type; } public String getEmpId() { return empId; } } 在筛选以下语句时 employees.str

需求是流式传输一组对象,根据某些条件进行过滤,并在一组字符串中仅收集employeeID

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());
返回一个
Set
而我只想收集empId,即
Set

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

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

使用
map()
员工
实例映射到相应的员工ID中

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

如果您还需要原始的
员工
,您可以使用
toMap

Map<String, Employee> employeesById = employees.stream()
        .filter(e-> e.getType() == 1)
        .collect(Collectors.toMap(Employee::getEmpId, Function.identity()));
使用方法将
Employee
转换为
String
Set<String> employeeIds = employeesById.keySet();