【问题标题】:how to get the count of number of true values in Arraylist java如何在Arraylist java中获取真值的数量
【发布时间】:2012-03-28 14:04:07
【问题描述】:

嗨,我是新来的,也是 Java 编程的新手,实际上我的问题是我有一个 Book 类型的数组列表,我在其中存储书名和标题,并通过 true 或 false 显式设置 OnLoan 值,但我是能够为 Book arrayList 存储真值或假值,但我想计算我的 arrayList 中真值的数量,如果 3 本书的借用状态为真,我希望计数为 3 我不知道如何从 java 中的 ArrayList 中获取该计数请帮助我,这是我的示例代码,我通过调用包含真假值的 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";
        } 

【问题讨论】:

  • 你能清理一下这个例子并使它完整吗?有像booksHeld 这样的变量,我可以假设它是List&lt;Book&gt;,然后你有cmets 说“用getIsbn 方法比较isbn 字符串”,但没有显示getIsbn 方法。
  • 我真的很抱歉忽略了 cmets 和是的书籍 Held 是我的 ArrayList 对象,为图书馆和用户类保存书籍,我目前正在处理图书馆类忽略获取 isbn 以及对不便表示抱歉

标签: java


【解决方案1】:

由于这个问题还没有 Java 8 的强制性流答案:

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

Source 稍作修改。

直截了当的方法:获取流,通过必须匹配布尔值 true 的谓词对其进行过滤,并为过滤器计算流中的匹配项。

【讨论】:

    【解决方案2】:

    您可以使用for-each loop,并检查每个元素是否被借用[假设Book 有一个方法onLoanStatus() 指示它是否处于加载状态]

    应该是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多