Java 如果有任何匹配项,请更新列表
如何在流中编写以下代码<代码>主题是一个Java 如果有任何匹配项,请更新列表,java,java-8,java-stream,Java,Java 8,Java Stream,如何在流中编写以下代码主题是一个数组列表 public void updateTopic(主题){ 对于(int i=0;itopics.get(i).getId().equals(topic.getId())) .findFirst() .ifPresent(i->topics.set(i,topic)); } 使用Stream::map怎么样?除非ID相等,否则映射到同一对象-然后映射到新对象。这可以通过简单地使用三元运算符来实现 public void updateTopic(Topic
数组列表
public void updateTopic(主题){
对于(int i=0;i
您可以通过如下方式导入Intstream
import java.util.stream.IntStream;
public void updateTopic(主题){
IntStream.range(0,topics.size())
.filter(i->topics.get(i).getId().equals(topic.getId()))
.findFirst()
.ifPresent(i->topics.set(i,topic));
}
使用Stream::map
怎么样?除非ID相等,否则映射到同一对象-然后映射到新对象。这可以通过简单地使用三元运算符来实现
public void updateTopic(Topic topic) {
topics = topics.stream()
.map(t -> t.getId().equals(topic.getId()) ? topic : t)
.collect(Collectors.toList());
}
你试过什么吗?如果你这样做,你会学得更快。根据你的逻辑,你可能想使用映射
,而不是列表
。然后整个代码可以替换为topics.replace(topic.getId(),topic)代码>。
public void updateTopic(Topic topic) {
topics = topics.stream()
.map(t -> t.getId().equals(topic.getId()) ? topic : t)
.collect(Collectors.toList());
}