如何获取Arraylist java中的真值数量

时间:2012-03-28 14:04:07

标签: java

嗨,我是新手,也是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";
        } 

2 个答案:

答案 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的谓词对其进行过滤,并计算过滤器流中的匹配项。