嗨,我是新手,也是Java编程的新手,实际上我的问题是我有一个类型为Book的数组列表,我在其中存储Book名称和标题,并明确地设置OnLoan值为true或false但我是能够为Book arrayList存储true或false值,但是我想在我的arrayList中计算真值的数量,如果有3本书借用状态为true我想将数量计为3我不知道如何从java中的ArrayList获取数量请帮帮我这里是我的示例代码通过调用包含true和false值的book类的getOnLoanStatus()来获得真正的价值
int borrowCount=0;
Book loanStatus = new Book();
boolean l = loanStatus.getOnLoanStatus();
//boolean to String conversion
System.out.println("value of l is" + l);
if(this.booksHeld.isEmpty())
{
return null;
}
for(int i=0;i<this.booksHeld.size();i++)
{
if(booksHeld.contains(l)) // compare the isbn string with getIsbn Method
{
borrowCount++;
}
}
if(borrowCount==0)
{
return "Libray: " + numberOfBooks() + "books " + " 0 book on Loan";
}
else
{
return "Libray: " + numberOfBooks() + "books " + borrowCount + "on Loan";
}
答案 0 :(得分:9)
你可以使用for-each loop,并检查每个元素是否被借用[假设Book
有一个方法onLoanStatus()
,表明它是否正在加载]
看起来应该是这样的:
int count = 0;
for (Book b : booksHeld) {
if (b.getOnLoanStatus()) count++;
}
//now count holds the number of loaned books.
答案 1 :(得分:1)
由于这个问题还没有java8 ;)
的强制性流答案:
long count = booksHeld.stream().filter(book -> book.getOnLoanStatus()).count();
Source进行了少量修改。
直接前进方法:获取流,使用必须匹配布尔值true的谓词对其进行过滤,并计算过滤器流中的匹配项。