Sortieren ein Array von Objekten in Java
-
Verwendung von
Comparable
zum Sortieren von Arrays von Objekten in Java - Verwenden von Lambda zum Sortieren eines Arrays von Objekten in Java
In diesem Tutorial lernen wir, wie man ein Array von Objekten mit der Schnittstelle Comparable
und den Lambda
-Funktionen in Java sortiert.
Verwendung von Comparable
zum Sortieren von Arrays von Objekten in Java
Zur Bestellung benutzerdefinierter Objekte wird eine Comparable
-Schnittstelle in Java verwendet. Hier implementiert die Klasse Student
Comparable
, sodass wir mit Arrays.sort()
ein Array von Objekten der Klasse Student
sortieren können.
Die Klasse Student
hat drei Mitgliedsvariablen name
, age
und gender
. Wir sortieren Elemente nur basierend auf diesen Datenelementen.
Die Comparable-Schnittstelle hat eine Methode, compareTo()
. Wie wir im Beispiel sehen können, hat die Klasse Student
diese Methode implementiert.
Die Methode compareTo()
wird verwendet, um das aktuelle Objekt mit dem angegebenen Objekt zu sortieren und gibt eine positive ganze Zahl zurück, falls das aktuelle Objekt größer als das aktuelle Objekt ist. Wenn das aktuelle Objekt kleiner als das angegebene Objekt ist, wird eine negative ganze Zahl zurückgegeben; Wenn Null zurückgegeben wird, ist das aktuelle Objekt äquivalent zum angegebenen Objekt.
Wir haben ein Array der Klassenobjekte Student
erstellt. Wir haben name
, age
und gender
als Argumente übergeben, um sie mit dem Standardkonstruktor der Klasse zu initialisieren.
Das Array wird zuerst nach age
und dann nach name
geordnet, wie wir in der compareTo()
-Methode der Student
-Klasse sehen können. Wir übergeben das Array students
an Arrays.sort()
.
Um das sortierte Array in unserem Format auszugeben, überschreiben wir die Methode toString()
in der Klasse Student
.
import java.util.Arrays;
class Student implements Comparable<Student> {
private String name;
private int age;
private String gender;
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String toString() {
return "{"
+ "name='" + name + '\'' + ", gender: " + gender + ", "
+ "age=" + age + '}';
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
public String getName() {
return name;
}
@Override
public int compareTo(Student o) {
if (this.age != o.getAge()) {
return this.age - o.getAge();
}
return this.name.compareTo(o.getName());
}
}
public class TestExample {
public static void main(String[] args) {
Student[] students = {new Student("Jack", 25, "male"), new Student("Sandy", 20, "female"),
new Student("Danny", 22, "male"), new Student("Zoey", 10, "female")};
Arrays.sort(students);
System.out.println(Arrays.toString(students));
}
}
Ausgabe:
[{name='Zoey', gender: female, age=10}, {name='Sandy', gender: female, age=20}, {name='Danny', gender: male, age=22}, {name='Jack', gender: male, age=25}]
Verwenden von Lambda zum Sortieren eines Arrays von Objekten in Java
Das Sortieren eines Arrays von Objekten wird mit den Lambda
-Funktionen in Java 8 einfach, ohne die Comparable
-Schnittstelle zu implementieren.
Hier haben wir eine Benutzerklasse Books
mit den Mitgliedsvariablen bookName
und author
. Der Standardkonstruktor initialisiert diese Datenmember.
Die Getter- und Setter-Methoden für den Zugriff auf diese Mitglieder sind ebenfalls in der Klasse Book
definiert. Die List
-Schnittstelle unterstützt die sort()
-Methode.
Hier ist bookList
die Instanz der Liste, die die Objekte der Klasse Books
enthält. Der Lambda-Ausdruck zum Sortieren der Liste nach Autor lautet (Books a , Books b) -> a.getAuthor().compareTo(b.getAuthor())
.
Die Methode sort()
gibt die sortierte Liste zurück, und wir durchlaufen diese Liste und drucken jedes Element. Die sortierte Liste wird in der Ausgabe gedruckt.
import java.util.ArrayList;
import java.util.List;
class Books {
String bookName;
String author;
public Books(String bookName, String author) {
this.bookName = bookName;
this.author = author;
}
@Override
public String toString() {
return "{"
+ "Book ='" + bookName + '\'' + ", author = '" + author + '\'' + "}";
}
public String getAuthor() {
return author;
}
public String getBookName() {
return bookName;
}
}
public class ExampleObjectSort {
public static void main(String[] args) {
List<Books> bookList = new ArrayList<>();
bookList.add(new Books("Barney's Version", "Mordecai Richler"));
bookList.add(new Books("The Unsettlers", "Mark Sundeen"));
bookList.add(new Books("The Debt to Pleasure", "John Lanchester"));
bookList.add(new Books("How to Do Nothing", "Jenny Odell"));
System.out.println("Before Sorting");
bookList.forEach((s) -> System.out.println(s));
System.out.println("");
System.out.println("Sorted Books by author Using Lambda.");
bookList.sort((Books a, Books b) -> a.getAuthor().compareTo(b.getAuthor()));
bookList.forEach((s) -> System.out.println(s));
}
}
Ausgabe:
Before Sorting
{Book ='Barney's Version', author = 'Mordecai Richler'}
{Book ='The Unsettlers', author = 'Mark Sundeen'}
{Book ='The Debt to Pleasure', author = 'John Lanchester'}
{Book ='How to Do Nothing', author = 'Jenny Odell'}
Sorted Books by author Using Lambda.
{Book ='How to Do Nothing', author = 'Jenny Odell'}
{Book ='The Debt to Pleasure', author = 'John Lanchester'}
{Book ='The Unsettlers', author = 'Mark Sundeen'}
{Book ='Barney's Version', author = 'Mordecai Richler'}
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedInVerwandter Artikel - Java Array
- So konvertieren Sie Byte-Array in Hex-String in Java
- Wie man zwei Arrays in Java verkettet
- Entfernen Sie Duplikate aus dem Array in Java
- Füllen Sie ein 2D-Array in Java
- Holen Sie sich die Teilmenge eines Arrays in Java
- Natürliche Ordnung in Java