5 回答
TA贡献1942条经验 获得超3个赞
您可以在流列表上使用过滤器,然后简单地更新计数
public void updateCount(String bookName, int updateBy) {
books.stream().filter(book -> book.getName().equals(bookName)).forEach(
book -> book.setCount(book.getCount() + updateBy)
);
}
TA贡献1828条经验 获得超6个赞
books.stream().filter(book -> book.getName().equals("book2")).findFirst().get().setCount(3);
但是,NoSuchElementException
如果 book2 在 List 中不存在,它会抛出。这就是为什么你应该使用Optional.isPresent()
检查。
Optional<Book> book2 = books.stream().filter(book -> book.getName().equals("book2")).findFirst(); book2.ifPresent(book -> book.setCount(3));
请注意,我也在寻找第一个 found book2
。如果要查找Book
具有特定名称的所有内容,则应使用foreach
语法而不是findFirst
.
TA贡献1780条经验 获得超4个赞
简单明了的方法:
public void updateCount(List<Book> books) { books.stream() .filter(book -> book.getName().equals("book2")) .findFirst() .get() .setCount(3);}
TA贡献1818条经验 获得超7个赞
您可以像下面那样遍历列表,并且为了更新对象值,您可以根据需要提供条件或使用数组的索引。假设您需要更新一本价格为 100 到 7500 的书,您可以执行以下操作。
for (Book book : books){
if( book.getPrice() == 100){
book.setPrice(7500);
}
}
// if you want to update the book2's number, then
for (Book book: books){
if( book.getName() == "Book2"){
book.setNumber(/*set number here*/);
}
}
TA贡献1804条经验 获得超2个赞
您链接的updateCount方法似乎只是创建了一个书籍列表,我不确定您要在这里做什么,但也许该方法应该返回List<Book>,以便您可以在主函数中创建一个书籍列表?如果你这样做,那么你可以创建一个新方法,你可以将你的列表传递给它,你想要在该列表中更新的索引以及该书的新计数值,如下所示:
private void updateBookCount(List<Book> books, int booksIndex, int newCount)
{
if (books.size() > booksIndex)
books.get(booksIndex).setCount(newCount);
}
添加回答
举报