[英]Java, printing arraylist in alphabetical order in ToString with compareTo method
我想按字母顺序打印数组列表“medewerkers”(英文员工)中的人员。
我已经创建了一个 compareTo 方法来按字母顺序获取它们,这个方法设置在一个名为“Persoon”(英语中的人)的抽象类中。 我想打印“Bedrijf”类的 ToString 方法,这必须按字母顺序打印 arraylist 中的名称。 但我不知道该怎么做。
我的程序结构:
我有一个班级“Bedrijf”(英文公司),其中公司的所有员工都设置在一个数组列表中。 我还有一个抽象类“Persoon”(英语中的person),因为公司有人员。 然后还有其他几个类在这些类中扩展了“Persoon”,我定义了不同的功能,例如经理、普通员工(我的程序中的 Werknemer)等等。 现在所有这些人都设置在“Bedrijf”类的数组列表中,我想按字母顺序打印我在数组列表中设置的所有名称。
在我的主类中,我通过 Bedrijf 的“neemInDienst”方法将人员添加到 lisy:
public class Main {
/**
* The entry point of application.
*
* @param args the input arguments
*/
public static void main(String[] args) {
Bedrijf bedrijf = new Bedrijf("HvA");
Werknemer w = new Werknemer(1200.00, "Jantine Jansen");
bedrijf.neemInDienst(w);
Werknemer we = new Werknemer(1300.00, "Piet Pietersen");
bedrijf.neemInDienst(we);
Vrijwilliger v = new Vrijwilliger("Guus Goedhart");
bedrijf.neemInDienst(v);
v.huurIn(10);
Manager m = new Manager(10000.00, "Brigitte Baas");
bedrijf.neemInDienst(m);
m.kenBonusToe(750);
Manager a = new Manager(10000.00, "Dirk Teur");
bedrijf.neemInDienst(a);
a.kenBonusToe(1200);
Zzper z = new Zzper(120, "Beun Haas");
bedrijf.neemInDienst(z);
z.huurIn(40);
// print de toString van het bedrijf
System.out.println(bedrijf);
// print alle inkomsten van de personen in het bedrijf (alle functies)
bedrijf.printInkomsten();
// print de aantal van de managers
System.out.println("\nAantal in management: " + bedrijf.aantalManagers());
}
}
数组列表所在的 Bedrijf 类以及我要打印的类:
public class Bedrijf {
private String naam;
/**
* lijst van alle Medewerkers.
*/
protected List<Persoon> medewerkers = new ArrayList<>();
//Magic numbers
static private int MIN_MANAGERS = 0;
/**
* Instantiates a new Bedrijf.
*
* @param naam the naam
*/
public Bedrijf(String naam) {
this.naam = naam;
}
/**
* Print inkomsten.
*
*/
public void printInkomsten() {
System.out.println("Inkomsten van alle personen:\n");
for (Persoon p : medewerkers) {
if (p.berekenInkomsten() == 0) {
System.out.println(p.naam + "," + " bedankt voor uw inzet!"); // Voor de vrijwilligers
} else {
System.out.println(p.naam + "," + " inkomsten: " + p.berekenInkomsten()); // Voor alle andere personen
}
}
}
/**
* Aantal managers int.
*
* @return the int
*/
public int aantalManagers() {
int managers = MIN_MANAGERS;
for (Persoon person : medewerkers) {
if (person instanceof Manager) {
managers++;
}
}
return managers;
}
/**
* Neemin dienst.
*
* @param persoon the persoon
*/
public void neemInDienst(Persoon persoon) {
this.medewerkers.add(persoon);
}
@Override
public String toString() {
String a = "Bedrijf " + naam + " heeft " + medewerkers.size() + " mederwerkers:\n";
StringBuilder namen = new StringBuilder();
for (Persoon x : medewerkers) {
namen.append(x.naam).append("\n");
}
return a + namen;
}
}
抽象类“人”
public abstract class Persoon implements Comparable<Persoon> {
String naam;
/**
* Instantiates a new Persoon.
*
* @param naam the naam
*/
public Persoon(String naam) {
this.naam = naam;
}
/**
* Bereken inkomsten.
*
* @return the double
*/
public abstract Double berekenInkomsten();
/**
* compareto method om int terug te geven voor alfabetische volgorde
*
* @param other
* @return laagste int is eerste in de alfabetische volgorde
*/
@Override
public int compareTo(Persoon other){
return this.naam.compareTo(other.naam);
}
@Override
public String toString() {
return this.naam;
}
}
也许如果它更容易阅读它的功能:
@Override
public String toString() {
String a = "Bedrijf " + naam + " heeft " + medewerkers.size() + " mederwerkers:\n";
StringBuilder namen = new StringBuilder();
for (Persoon x : medewerkers) {
namen.append(x.naam).append("\n");
}
return a + namen;
}
我对 Java 还很陌生,所以如果有人可以提供帮助,那就太好了! 提前致谢!
在评论的帮助下修复了问题。
添加:
Collections.sort(medewerkers)
在 to string 方法中,在循环遍历列表以按字母顺序打印所有名称之前。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.