如何实现“java8两个list中某一字段值拼接set到另一个”

流程图

flowchart TD
    A(初始化List1和List2) --> B(提取List1中需要拼接的字段值)
    B --> C(将字段值拼接为Set)
    C --> D(将Set赋值给List2中对应字段)

步骤说明

  1. 初始化List1和List2 首先,我们需要创建两个List对象,分别用于存储需要拼接的字段值和存储拼接后结果的字段值。

    List<Obj1> list1 = new ArrayList<>();
    List<Obj2> list2 = new ArrayList<>();
    
  2. 提取List1中需要拼接的字段值 接下来,我们需要从List1中提取需要拼接的字段值。假设我们需要拼接的字段是name,那么我们可以使用Stream API的map方法来提取字段值。

    Set<String> names = list1.stream()
                            .map(Obj1::getName)
                            .collect(Collectors.toSet());
    

    这里使用了map方法来将每个Obj1对象的name字段提取出来,然后使用collect方法将提取出来的字段值收集到一个Set中。

  3. 将字段值拼接为Set 接下来,我们需要将字段值拼接为一个Set对象。由于我们已经使用了Collectors.toSet()来收集字段值,所以这一步可以省略。

  4. 将Set赋值给List2中对应字段 最后,我们需要将拼接后的Set赋值给List2中对应的字段。假设我们需要将拼接后的字段值赋值给List2中的names字段,那么我们可以使用forEach方法来遍历List2,并将Set赋值给对应字段。

    list2.forEach(obj2 -> obj2.setNames(names));
    

    这里使用了forEach方法来遍历List2中的每个Obj2对象,并使用setNames方法将拼接后的字段值赋值给对应字段。

完整代码示例

import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 初始化List1和List2
        List<Obj1> list1 = new ArrayList<>();
        List<Obj2> list2 = new ArrayList<>();

        // 提取List1中需要拼接的字段值
        Set<String> names = list1.stream()
                                 .map(Obj1::getName)
                                 .collect(Collectors.toSet());

        // 将字段值拼接为Set

        // 将Set赋值给List2中对应字段
        list2.forEach(obj2 -> obj2.setNames(names));
    }
}

class Obj1 {
    private String name;

    public String getName() {
        return name;
    }
}

class Obj2 {
    private Set<String> names;

    public void setNames(Set<String> names) {
        this.names = names;
    }
}

这个示例中,我们通过初始化List1和List2,并提取List1中需要拼接的字段值。然后,我们将字段值拼接为Set,并将Set赋值给List2中对应的字段。