这是我在java中所能做的最好的操作,但它收集的是唯一的名称,而不是狗:
(狗包含除名称以外的其他字段)
// collect all dogs names from first list
List<String> dogNames1 = dogsList1.stream()
.map(x -> x.getName()).collect(Collectors.toList());
dogList2.stream()
.filter(x->!dogNames1.contains(x.getName()))
.forEach( x->
dogsList1.add(x);
);
还能改进吗?还有其他更好的解决方案或优化方法吗?
可以使用“合并多个流”和“删除重复项”。
对于一个给定名字的第一只狗,你可以做
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class A {
public static void main(String[] args) {
List<Dog> dogList1 = Arrays.asList(new Dog("a", 1), new Dog("b", 2), new Dog("f", 3));
List<Dog> dogList2 = Arrays.asList(new Dog("b", 4), new Dog("c", 5), new Dog("f", 6));
List<Dog> dogList3 = Arrays.asList(new Dog("b", 7), new Dog("d", 8), new Dog("e", 9));
List<Dog> dogs = new ArrayList<>(
Stream.of(dogList1, dogList2, dogList3)
.flatMap(List::stream)
.collect(Collectors.toMap(Dog::getName,
d -> d,
(Dog x, Dog y) -> x == null ? y : x))
.values());
dogs.forEach(System.out::println);
}
}
class Dog {
String name;
int id;
public Dog(String name, int id) {
this.name = name;
this.id = id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Dog{" +
"name='" + name + '\'' +
", id=" + id +
'}';
}
}
印刷品
Dog{name='a', id=1}
Dog{name='b', id=2}
Dog{name='c', id=5}
Dog{name='d', id=8}
Dog{name='e', id=9}
Dog{name='f', id=3}
Set<String> names = Stream.of(dogList1, dogList2, dogList3)
.flatMap(List::stream)
.map(Dog::getName)
.collect(Collectors.toSet());
我有两个(或更多)
我如何合并两组对象,如果Set1中的一个对象具有匹配的和作为Set2中的一个对象,那么在合并后的集合中只保留Set2中的一个。 例如。 Set1: Set2: 生成的合并集:(顺序无关紧要) 我可以联合这两个集合但我不知道如何利用Java8流添加此过滤条件
需要帮助的一个案件流与分组由我希望能够分组由2个不同的字段,并有其他大小数字段的总和,根据不同的分组。以下是我的实体: 让我们假设我有以下列表作为输入: 下面有一个解决方案的开头,但我在添加第二个聚合来总结余额的时候阻止了:
有没有办法把下面的2个状态结合起来呢? 我有一个类如下所示: 包含一个介于之间的随机值。 是一个包含大量
本文向大家介绍Java中合并两个集合的方法,包括了Java中合并两个集合的方法的使用技巧和注意事项,需要的朋友参考一下 要在JAVA中合并两个集合,代码如下所示的− 示例 输出结果 名为Demo的类包含名为“set_merge”的函数,该函数使用“addAll”函数合并作为参数传递给函数的两个集。 在main函数中,定义了两个集合,并使用‘addAll’函数将元素添加到其中。 控制台上会打印相关消
本文向大家介绍分组字符合并SQL语句 按某字段合并字符串之一(简单合并),包括了分组字符合并SQL语句 按某字段合并字符串之一(简单合并)的使用技巧和注意事项,需要的朋友参考一下 标题:按某字段合并字符串之一(简单合并) 描述:将如下形式的数据按id字段合并value字段。 id value ----- ------ 1 aa 1 bb 2 aaa 2 bbb