public class Employee {
private String name;
private int age;
privates Langgehalt;
public String getName() {
Name zurückgeben;
}
public int getAge() {
return age;
}
public long getSalary() {
return salary;
}
public Employee(String name, int age, int salary) {
this.name = name;
this.age = Alter;
this.salary = Gehalt;
}
@Override
//Diese Methode zeigt Mitarbeiterinformationen an
public String toString() {
return "[name=" + this.name + ", age=" + this.age + ", salary=" +
this.salary + "]";
}
}
import java.util.ArrayList;Aufruf des Collections.sort() verursachen ein Problem, da es für eine ArrayList von Objekten ausgeführt wird, die nur funktioniert, wenn Sie sowohl die Vergleichs- als auch die Komparatorschnittstelle verwenden. Es erscheint ein Kompilierungsfehler:
import java.util.Collections;
public class ArrayListComparable {
public static void main(String[] args) {
ArrayList< Mitarbeiter> arraylist = neue ArrayList< Mitarbeiter> ();
arraylist.add(new Employe("mateo", 32, 20000));
arraylist.add(new Employe("katia", 26, 10000));
arraylist.add(new Employe("aline", 30, 40000));
arraylist.add(new Employe("salim", 28, 35000));
System.out.println("Geordnete Liste der Mitarbeiter:\n"+Collections.sort(arraylist));
}
}
Ausnahme im Thread "main" java.lang.Fehler: Ungelöste Kompilierungsprobleme:
Der Operator + ist für den/die Argumenttyp(e) nicht definiert String, void
Gebundene Diskrepanz: Die generische Methode sort(List) vom Typ Collections ist für die Argumente (ArrayList ) nicht anwendbar. Der abgeleitete Typ Employe ist kein gültiger Ersatz für den Begrenzungsparameter >
at ArrayListComparable.main(ArrayListComparable.java:14)
public class Employe implementiert Comparable< Mitarbeiter> {Jetzt haben wir das Recht, die Methode Collections.sort():
private Zeichenfolgenname;
private int age;
privates Langgehalt;
public String getName() {
Name zurückgeben;
}
public int getAge() {
return age;
}
public long getSalary() {
return salary;
}
public Employee(String name, int age, int salary) {
this.name = name;
this.age = Alter;
this.salary = Gehalt;
}
@Override
//Diese Methode zeigt Mitarbeiterinformationen an
public String toString() {
return "[name=" + this.name + ", age=" + this.age + ", salary=" +
this.salary + "]";
}
@Override
public int compareTo(Employee emp) {
//sortiere Mitarbeiter nach Alter in der Reihenfolge croiddant
//retroune eine negative, null oder positive Ganzzahl, wenn das Alter
//des Mitarbeiters kleiner, gleich oder größer als das Objekt ist, verglichen mit
return (this.age - emp.age);
}
}
import java.util.ArrayList;Wenn wir diesen Code ausführen, erhalten wir das folgende Ergebnis:
import java.util.Collections;
public class ArrayListComparable {
public static void main(String[] args) {
ArrayList< Mitarbeiter> arraylist = neue ArrayList< Mitarbeiter> ();
arraylist.add(new Employe("mateo", 32, 20000));
arraylist.add(new Employe("katia", 26, 10000));
arraylist.add(new Employe("aline", 30, 40000));
arraylist.add(new Employe("salim", 28, 35000));
Sammlungen.sort(arraylist);
System.out.println("geordnete Liste der Mitarbeiter nach Alter:\n");
for(Mitarbeiter e:arraylist)
System.out.println(e);
}
}
geordnete Liste der Mitarbeiter nach Alter:
[name=katia, age=26, salary=10000]
[name=salim, age=28, salary=35000]
[name=aline, age=30, salary=40000]
[name=mateo, age=32, salary=20000]
import java.util.Comparator;Die Testklasse main:
public class Mitarbeiter {
private Name der Zeichenfolge;
private int age;
privates Langgehalt;
public String getNom() {
Name zurückgeben;
}
public int getAge() {
return age;
}
public long getSalary() {
return salary;
}
public Employee(String name, int age, int salary) {
this.name = name;
this.age = Alter;
this.salary = Gehalt;
}
@Override
//Diese Methode zeigt Mitarbeiterinformationen an
public String toString() {
return "[name=" + this.name + ", age=" + this.age + ", salary=" +
this.salary + "]";
}
/*
* Komparator zum Sortieren von Mitarbeitern nach Namen
*/
öffentlicher statischer Komparator< Mitarbeiter> ComparatorName = neuer Comparator< Mitarbeiter> () {
@Override
public int compare(Mitarbeiter e1, Mitarbeiter e2) {
return e1.getName().compareTo(e2.getName());
}
};
/*
* Komparator zum Sortieren von Mitarbeitern nach Alter
*/
öffentlicher statischer Komparator< Mitarbeiter> ComparatorAge = neuer Comparator< Mitarbeiter> () {
@Override
public int compare(Mitarbeiter e1, Mitarbeiter e2) {
return (int) (e1.getAge() - e2.getAge());
}
};
/*
* Komparator zum Sortieren von Mitarbeitern nach Gehalt
*/
öffentlicher statischer Komparator< Mitarbeiter> ComparatorSalary = neuer Comparator< Mitarbeiter> () {
@Override
public int compare(Mitarbeiter e1, Mitarbeiter e2) {
return (int) (e1.getSalary() - e2.getSalary());
}
};
}
import java.util.ArrayList;Die Ausführung dieses Codes ergibt:
import java.util.Collections;
public class main{
public static void main(String[] args) {
ArrayList< Mitarbeiter> arraylist = neue ArrayList< Mitarbeiter> ();
arraylist.add(new Employe("mateo", 32, 20000));
arraylist.add(new Employe("katia", 26, 10000));
arraylist.add(new Employe("aline", 30, 40000));
arraylist.add(new Employe("salim", 28, 35000));
//Sortieren nach Name
Collections.sort(arraylist, Employee.ComparatorName);
System.out.println("geordnete Liste der Mitarbeiter nach Namen:");
for(Mitarbeiter e:arraylist)
System.out.println(e);
//nach Alter sortieren
Collections.sort(arraylist, Employee.ComparatorAge);
System.out.println("geordnete Liste der Mitarbeiter nach Alter:");
for(Mitarbeiter e:arraylist)
System.out.println(e);
//sort by salary
Collections.sort(arraylist, Employee.ComparatorSalary);
System.out.println("geordnete Liste der Mitarbeiter nach Gehalt:");
for(Mitarbeiter e:arraylist)
System.out.println(e);
}
}
geordnete Liste der Mitarbeiter nach Name:
[name=aline, age=30, salary=40000]
[name=katia, age=26, salary=10000]
[name=mateo, age=32, salary=20000]
[name=Salim, age=28, salary=35000]
geordnete Liste der Mitarbeiter nach Alter:
[name=katia, age=26, salary=10000]
[name=salim, age=28, salary=35000]
[name=aline, age=30, salary=40000]
[name=mateo, age=32, salary=20000]
geordnete Liste der Mitarbeiter nach Gehalt:
[name=katia, age=26, salary=10000]
[name=mateo, age=32, salary=20000]
[name=salim, age=28, salary=35000]
[name=aline, age=30, salary=40000]
Please disable your ad blocker and refresh the window to use this website.