当前位置: 首页 > 知识库问答 >
问题:

在迭代流Java时更新arraylist

田文景
2023-03-14

我想在id字符串与给定值匹配时更新该值

public void updateTopic(Topic topic, String id) {
    for (int i = 0; i < getTopicList().size(); i++) {
        Topic topic1 = getTopicList().get(i);
        if (topic1.getId().equals(id)) {
            getTopicList().set(i, topic);
            return;
        }
    }
}

有没有人可以使用Java streams API来实现上述功能

共有1个答案

夔宏深
2023-03-14

使用return搜索第一个项目,因此

// fint topic in list
Topic topicToReplace = getTopicList().stream().filter(item -> item.getId().equals(id)).findFirst();
// find topic position
int pos = getTopicList().indexOf(topicToReplace);

// replace topic
getTopicList().remove(pos);
getTopicList().add(pos, topic);
 类似资料:
  • 我一直在玩Java新的和闪亮的功能部分,最让我困惑的事情之一是流? 它们有什么用? 在谷歌上,我主要找到了如何使用它们的解释和实际例子,我已经记下来了,没有关于幕后魔法的具体内容,这是我感兴趣的。 我的意思并不是说,从实际意义上讲,我从一些函数语言中找到了map/filter/reduce/etc。相当快,但为什么我们需要先转换为流?Java已经有了迭代器。流和迭代器之间是否有根本的区别,比如一个

  • 我正在努力改进我写的一个数据传输程序。我在寻找如何让它更快的建议。我的程序通过填充ResultSet并将结果写入文件来从数据库(通常是Oracle11g)中提取数据。该程序定期查看表,并查询某个特殊列是否发生了更改。例如,这可能是这样一个查询:

  • 问题内容: 假设我有以下几种类型: 我想迭代节点的属性以更改它们。 我本来希望能够做到: 但是由于不是指针,所以这行不通,我必须这样做: 有没有更简单或更快速的方法?是否可以直接从中获取指针? 显然,我不想仅仅为了迭代而更改结构,更冗长的解决方案不是解决方案。 问题答案: 不,您想要的缩写是不可能的。 原因是从您要遍历的切片中复制值。关于范围的规范说: value (if 2nd variable

  • 问题内容: 大约一年前,我偶然发现了Java的一个不错的功能,我一生都找不到。 通过一些魔术接口,显然可以在运行时声明一些可替换的类或函数。 我找到了一个很好的示例指南,该人运行了一个简单的小程序,该程序打印了一条特定的消息,然后他使用一种我不记得的方法更新了该程序,然后突然该程序将旧的打印功能替换为新的打印功能。 我尝试浏览Java API来激发我的记忆力和谷歌搜索功能,但没有成功。有人可以帮忙

  • 问题内容: 为了利用Jdk 8中包含的多种查询方法,我尝试设计一种域模型,其中具有多重性(具有零个或多个实例)的关系的获取器返回a 而不是or 。 我的疑问是,与相比,是否还会产生任何额外的管理费用? 那么,用损害我的域模型是否有任何缺点? 或者,我是否应该始终返回或,并通过将迭代器与转换为最终结果,让最终用户选择是否使用流的决定? 请注意 ,返回a 是无效的选项,因为在这种情况下,大多数关系都是

  • 我有客户对象的列表。我想迭代列表并按1递增顺序。 我尝试了每个列表,但在这里我必须创建新列表并在其中添加值。 有没有更好的方法?我尝试使用streams,但它只是映射订单