


Wie implementiert man eine benutzerdefinierte Sortierung für eine ArrayList von Objekten in Java?
Benutzerdefinierte Sortierung für ArrayList of Objects
Bei der Datenverwaltung in modernen Anwendungen ist es oft notwendig, Objekte nach bestimmten Kriterien zu sortieren. Die Sortierung verbessert die Lesbarkeit der Daten, erleichtert den Datenabruf und rationalisiert den Betrieb. Ein häufiges Szenario ist das Sortieren einer ArrayList von Objekten mithilfe einer benutzerdefinierten Sortierreihenfolge.
Angenommen, Sie haben eine Adressbuchanwendung, die Kontakte in einer ArrayList speichert. Jeder Kontakt enthält Felder für Namen, Privat- und Mobiltelefonnummern sowie eine Adresse. Um die Kontakte nach Namen zu sortieren, müssen Sie eine benutzerdefinierte Sortierfunktion definieren.
Definieren einer natürlichen Reihenfolge
Wenn das Sortieren nach einem bestimmten Feld eine natürliche Anforderung für ist Kontaktklasse können Sie die Comparable-Schnittstelle innerhalb der Klasse implementieren. Hier ist ein Beispiel:
public class Contact implements Comparable<Contact> { private String name; // getters, setters, and other boilerplate @Override public int compareTo(Contact other) { return name.compareTo(other.name); } }
Durch die Implementierung von Comparable richten Sie eine natürliche Reihenfolge für die Contact-Klasse ein, was bedeutet, dass Sie die ArrayList mithilfe der Collections.sort()-Methode nach dem Namensfeld sortieren können:
List<Contact> contacts = new ArrayList<>(); // Fill the list with contacts Collections.sort(contacts);
Definieren einer externen Reihenfolge
Wenn Sie nach anderen als den natürlichen Feldern sortieren müssen Bei der Bestellung können Sie einen Vergleicher erstellen. Ein Komparator bietet einen externen, steuerbaren Sortiermechanismus:
Collections.sort(contacts, new Comparator<Contact>() { public int compare(Contact one, Contact other) { return one.getAddress().compareTo(other.getAddress()); } });
Hier sortieren Sie nach Adresse statt nach dem Standardnamensfeld.
Wiederverwendung von Komparatoren
Um die Erstellung mehrerer Komparatoren zu vermeiden, können Sie diese innerhalb der Contact-Klasse definieren selbst:
public class Contact { // getters, setters, and other boilerplate public static Comparator<Contact> COMPARE_BY_PHONE = new Comparator<Contact>() { public int compare(Contact one, Contact other) { return one.phone.compareTo(other.phone); } }; }
Jetzt können Sie mit dem vordefinierten Komparator per Telefon sortieren:
Collections.sort(contacts, Contact.COMPARE_BY_PHONE);
Generische Bohnenvergleicher
Für generische Sortierung , erwägen Sie die Verwendung eines BeanComparators:
public class BeanComparator implements Comparator<Object> { private String getter; public BeanComparator(String field) { this.getter = "get" + field.substring(0, 1).toUpperCase() + field.substring(1); } public int compare(Object o1, Object o2) { // ... implementation ... } }
Dies ermöglicht die Sortierung nach jeder Bean Feld:
Collections.sort(contacts, new BeanComparator("phone"));
Durch die Implementierung einer benutzerdefinierten Sortierung erhalten Sie Kontrolle darüber, wie ArrayLists sortiert werden, wodurch die Datenbearbeitung effizienter wird und an spezifische Anwendungsanforderungen angepasst wird.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine benutzerdefinierte Sortierung für eine ArrayList von Objekten in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...

Wenn Sie TKMybatis für Datenbankabfragen verwenden, ist das Aufbau von Abfragebedingungen ein häufiges Problem. Dieser Artikel wird ...
