gpt4 book ai didi

java - 更新单个列表项 RXJava

转载 作者:行者123 更新时间:2023-12-01 21:14:54 25 4
gpt4 key购买 nike

我基本上想将这个 for 循环转换为 Observable

private static List<Book> books

public static void replaceBook(Book book) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId().equals(book.getId())) {
books.set(i, book);
}
}
}

这是我到目前为止所拥有的,但它不起作用。我以为 map 运算符(operator)会更新过滤后的项目,但我似乎遗漏了一些东西。

Observable.from(books).filter(new Func1<Book, Boolean>() {
@Override
public Boolean call(Book b) {
return b.getId().equals(book.getId());
}
}).map(new Func1<Book, Book>() {
@Override
public Book call(Book b) {
return book;
}
}).subscribe();

更新

根据鲍里斯和塔索斯的回答,我得到了以下似乎有效的答案

  Observable.from(books)
.map(b -> b.getId().equals(book.getId()) ? book : b)
.toList()
.subscribe(s -> books = s);

最佳答案

Observable
.from(books)
.map(new Func1<Book, Book>() {
@Override
public Book call(Book b) {
if (book.getId().equals(b.getId()))
return book;
return b;
}
})
.toList()
.subscribe();

关于java - 更新单个列表项 RXJava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399395/

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