5 回答

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以在流列表上使用過濾器,然后簡單地更新計(jì)數(shù)
public void updateCount(String bookName, int updateBy) {
books.stream().filter(book -> book.getName().equals(bookName)).forEach(
book -> book.setCount(book.getCount() + updateBy)
);
}

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
books.stream().filter(book -> book.getName().equals("book2")).findFirst().get().setCount(3);
但是,NoSuchElementException
如果 book2 在 List 中不存在,它會拋出。這就是為什么你應(yīng)該使用Optional.isPresent()
檢查。
Optional<Book> book2 = books.stream().filter(book -> book.getName().equals("book2")).findFirst(); book2.ifPresent(book -> book.setCount(3));
請注意,我也在尋找第一個(gè) found book2
。如果要查找Book
具有特定名稱的所有內(nèi)容,則應(yīng)使用foreach
語法而不是findFirst
.

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊
簡單明了的方法:
public void updateCount(List<Book> books) { books.stream() .filter(book -> book.getName().equals("book2")) .findFirst() .get() .setCount(3);}

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以像下面那樣遍歷列表,并且為了更新對象值,您可以根據(jù)需要提供條件或使用數(shù)組的索引。假設(shè)您需要更新一本價(jià)格為 100 到 7500 的書,您可以執(zhí)行以下操作。
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貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
您鏈接的updateCount方法似乎只是創(chuàng)建了一個(gè)書籍列表,我不確定您要在這里做什么,但也許該方法應(yīng)該返回List<Book>,以便您可以在主函數(shù)中創(chuàng)建一個(gè)書籍列表?如果你這樣做,那么你可以創(chuàng)建一個(gè)新方法,你可以將你的列表傳遞給它,你想要在該列表中更新的索引以及該書的新計(jì)數(shù)值,如下所示:
private void updateBookCount(List<Book> books, int booksIndex, int newCount)
{
if (books.size() > booksIndex)
books.get(booksIndex).setCount(newCount);
}
添加回答
舉報(bào)