gpt4 book ai didi

Java 8 基于列表的Stream操作

转载 作者:行者123 更新时间:2023-12-02 09:44:55 24 4
gpt4 key购买 nike

我有两个列表。第一个是字符串列表 - A 列表,第二个包含新类的列表,比如说 B 类。

B 类包含诸如 example1、example2、example3、example4 等字符串字段。

我尝试了类似的方法,但我认为它适用于克隆集合,并且不会将特定值更改为 null。

listOfB.stream().flatMap(p -> Stream.of(p.getExample1(),p.getExample2(), 
p.getExample3(), p.getExample4()))
.forEach(i -> {
if (listOfA.contains(i)) {
i = null
}
});

我想要实现的是流式传输 B 对象列表,获取所有示例字段(从 1 到 4),然后检查 A 列表是否至少包含一个示例字段值,如果是,则设置此特定示例字段为空。

最佳答案

要仅使用一个流执行此操作,您必须在 lambda 内部通过一系列 if 检查。

public void stack() {
List<String> aList = Arrays.asList("foo2", "baz4");

B b1 = new B("foo1", "foo2", "foo3", "foo4");
B b2 = new B("bar1", "bar2", "bar3", "bar4");
B b3 = new B("baz1", "baz2", "baz3", "baz4");

List<B> bList = Stream.of(b1, b2, b3).peek(b -> {
if (aList.contains(b.getExample1())) {
b.setExample1(null);
}
if (aList.contains(b.getExample2())) {
b.setExample2(null);
}
if (aList.contains(b.getExample3())) {
b.setExample3(null);
}
if (aList.contains(b.getExample4())) {
b.setExample4(null);
}
}).collect(Collectors.toList());

System.out.println(bList);
}

输出:

B [example1=foo1, example2=null, example3=foo3, example4=foo4],

B [example1=bar1, example2=bar2, example3=bar3, example4=bar4],

B [example1=baz1, example2=baz2, example3=baz3, example4=null]

关于Java 8 基于列表的Stream操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56737712/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com