如何在Java中获取ArrayList中真实值的数量

3

你好,我是新来的,也是新手Java编程。我的问题是,我有一个类型为Book的ArrayList,其中存储了书名和标题,并通过true或false显式设置OnLoan值,但是我能够将true或false值存储到Book ArrayList中,但我想计算我的ArrayList中true值的数量。比如说,如果有3本书的借阅状态是true,我希望计数为3。请帮助我解决问题,在这里是我的示例代码。我通过从Book类调用getOnLoanStatus()获取true值和false值。

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";
        } 

你能清理一下这个例子并完善它吗?例如,有像booksHeld这样的变量, 我可以假设它是List<Book>, 然后你有注释说“将ISBN字符串与getIsbn方法进行比较”,但是没有展示getIsbn方法。 - wkl
非常抱歉,忽略那些评论。是的,“books Held”是我的ArrayList对象,用于保存图书馆和用户类的书籍。我目前正在处理图书馆类,忽略“get isbn”方法。对此给您带来的不便再次道歉。 - Hardy
2个回答

10
你可以使用for-each循环,并检查每个元素是否被借出[假设Book有一个方法onLoanStatus(),用于指示它是否已借出]

应该看起来像这样:

int count = 0;
for (Book b : booksHeld) { 
  if (b.getOnLoanStatus()) count++;
}
//now count holds the number of loaned books.

10

由于这个问题还没有Java 8的必要流式回答:

long count = booksHeld.stream().filter(book -> book.getOnLoanStatus()).count();

来源 经过小修改。

直接的方法是:使用流,通过必须匹配布尔值 true 的谓词对其进行过滤,并计算流中过滤器的匹配项数量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接