计算 Arraylist 中的书籍数量

Count number of books in Arraylist

我是 Java 编程新手,在学校学习编程。

我们接到一项任务,要创建一个小型图书馆,其中包含以下 classes 图书馆、书籍、作者和副本。使用给定的 class Biblio,它具有预定义的代码并将书籍添加到 Class 中数组列表中的 class 书籍中复制。

已附加 UML 域,因此您了解 classes 的流程 一切正常,生成的输出是正确的。

class 库中只有一种方法不起作用,int 方法必须根据 Class 书(字符串)计算副本数: 我必须通过 Class 副本中的 Arraylist 并查找特定的书和 return 副本的数量。 对不起代码中的荷兰语。 我使用 for 循环尝试了多个步骤 现在我找到了一个类似 post 的 uses hashset,我试过下面的代码但是 return 返回 0。(有 3 个副本)

package domein;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;

import domein.Boek;
import domein.Exemplaar;

/**
 *
 * Klasse die verantwoordelijk is voor het beheer van boeken
 *
 */
public class Bibliotheek {
  private ArrayList < Exemplaar > boekenlijst = new ArrayList < Exemplaar > ();


  /**
   *
   * Print de naam van de Bibliiotheek.
   *
   */
  public Bibliotheek(String string) {
    System.out.println(string);

  }

  /**
   * Methode om een alle exmeplaren van de opgegeven boek toe te voegen aan de
   * lijst.
   *
   * @param b1
   * @param exemplaar
   */

  public void voegToe(Boek b1, int exemplaar) {
    for (int i = 0; i < exemplaar; i++) {
      Exemplaar e = new Exemplaar(b1, exemplaar);
      boekenlijst.add(e);

    }

  }

  /**
   * Methode om een boek toe te voegen aan de lijst.
   *
   * @param b2
   */
  public void voegToe(Boek b2) {

    Exemplaar f = new Exemplaar(b2, 1);

    boekenlijst.add(f);
  }

  /**
   * Hiermee worden alle boeken van de bibliotheek opgevraagd en getoond op het
   * scherm.
   *
   * @return
   */
  public ArrayList < String > toonCollectie() {
    ArrayList < String > titels = new ArrayList < String > ();
    for (Exemplaar boek: boekenlijst) {

      System.out.println("Exemplaar --> " + boek.getTitel() + " " + boek.getAuteur() + " in taal " + boek.getTaal());
    }
    return titels;
  }

  /**
   * Hiermee worden alle Engelse boeken van de bibliotheek opgevraagd en worden
   * de exemeplaren in het Engels getoond op het scherm.
   *
   * @param string
   * @return
   */
  public ArrayList < Exemplaar > toonCollectie(String string) {
    for (Exemplaar boek: boekenlijst) {
      if (boek.getTaal() == string)

        System.out.println("Exemplaar --> " + boek.getTitel() + " " + boek.getAuteur() + " in taal " + boek.getTaal());
    }
    return boekenlijst;

  }

  /**
   * Hiermee worden alle auteurs welke een prijs hebben opgevraagd in de
   * bibliotheek en degene met een prijs worden op het scherm getoond.
   *
   * @return
   */
  public boolean printAuteurs() {
    for (Exemplaar auteur: boekenlijst)
      if (auteur.getPrijs(true))
        System.out.println(auteur.getAuteur());
    return false;

  }

  /**
   * Een methode om door de boekenlijst te gaan en de totaal aantal exemplaren
   * op te vragen.
   *
   * @param b1
   * @return
   */

  public int telExemplaren(Boek b1) {
    Set < String > set = new HashSet < String > ();
    int count = 0;
    for (Exemplaar element: boekenlijst) {
      String names = element.getTitel();
      set.add(names);
    }

    for (String a: set) {
      for (Exemplaar element: boekenlijst) {
        String names = element.getTitel();
        if (a.equals(names)) {
          count++;
        }
      }

      count = 0;
    }

    return count;

  }
}

非常感谢任何帮助。我已经添加了完整的代码

删除行

count = 0;

从函数的末尾开始应该可以帮助它做一些比当前更有用的事情。

您的 telExemplaren() 方法完全忽略了 Boek b1 参数。

也许这就是你想要做的?

public int telExemplaren(Boek b1) {
  int count = 0;
  for (Exemplaar element: boekenlijst) {
    if (b1.getTitel().equals(element.getTitel())) {
      count++;
    }
  }
  return count;
}