Java流比较两个流中的对象并创建新对象

Java流比较两个流中的对象并创建新对象,java,java-stream,Java,Java Stream,我有两份清单: List listOne=provider.getObjects().stream().collect(Collectors.toList()); List listTwo=provider2.getObjects().stream().collect(Collectors.toList()); 现在我想要创建包含所有可能的Object1-Object2组合的列表:列表结果 类对象组合{ 反对1反对1; 对象2对象2; 公共对象组合(Object1 Object1,Object

我有两份清单:

List listOne=provider.getObjects().stream().collect(Collectors.toList());
List listTwo=provider2.getObjects().stream().collect(Collectors.toList());
现在我想要创建包含所有可能的
Object1
-
Object2
组合的列表:
列表结果

类对象组合{
反对1反对1;
对象2对象2;
公共对象组合(Object1 Object1,Object2 Object2){
this.object1=object1;
this.object2=object2;
}
}

java 8 streams如何实现这一点?

您可以使用
flatMap
获得所有组合:

List<ObjectCombinations> result =
    listOne.stream()
           .flatMap(o1 -> listTwo.stream()
                                 .map(o2 -> new ObjectCombinations(o1,o2)))
           .collect(Collectors.toList());
列出结果=
listOne.stream()
.flatMap(o1->listTwo.stream()
.map(o2->新对象组合(o1,o2)))
.collect(Collectors.toList());

首先创建一个
,然后使用
flatMap
将该流的每个元素与
listwo
的所有元素组合,并创建
对象组合
实例,您可以使用
flatMap
在第二个列表上进行流式处理,创建对象组合并展平列表

List<ObjectCombinations> res = 
       listOne.stream()
              .flatMap(a -> listTwo.stream().map(b -> new ObjectCombinations(a,b)))
              .collect(Collectors.toList());
List res=
listOne.stream()
.flatMap(a->listTwo.stream().map(b->new ObjectCompositions(a,b)))
.collect(Collectors.toList());

如果我们使用map而不是flatmap怎么办?@JeetKumar您将得到不同的结果(一个
而不是
,它将被收集到
列表
而不是
列表
)。