国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Heim Java JavaErste Schritte Der Unterschied zwischen vergleichbar und Komparator in Java

Der Unterschied zwischen vergleichbar und Komparator in Java

Nov 27, 2019 pm 01:20 PM
comparable comparator java der Unterschied Vergleicher

Der Unterschied zwischen vergleichbar und Komparator in Java

Comparable Comparator

Comparable befindet sich im java.lang-Paket. Es handelt sich im Wesentlichen um einen internen Comparator, der Comparable selbst implementiert Das Vergleichsergebnis h?ngt von der Implementierung der natürlichen Vergleichsmethode ?compareTo“ ab.

Die Rückgabewerte von CompareTo sind -1, 0, 1. Wenn der Komparator gr??er als das verglichene Objekt ist, wird 1 zurückgegeben, 0 wird zurückgegeben, wenn er gleich ist, und -1 wird zurückgegeben, wenn er kleiner als das verglichene Objekt ist.

Collections.sort und Arrays.sort k?nnen automatisch Objekte sortieren, die Comparable implementieren.

Kostenlose Online-Lernvideoempfehlung: Java-Lernen

Das Beispiel sieht wie folgt aus: Wir erstellen ein Knotenobjekt und überprüfen die Verwendung von Comparable durch Vergleich zwischen Knotenobjekten.

Die Implementierung des Node-Objekts ist wie folgt:

public class Node implements Comparable<Object>{
	
	private int num;
	
	private String name;

	@Override
	public String toString() {
		return "num=" + num + " name=" + name;
	}

	public Node(int num, String name) {
		super();
		this.num = num;
		this.name = name;
	}

	public Node() {
		super();
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@Override
    public int compareTo(Object o) {
		Node node = (Node)o;
        return this.num - node.getNum();
    }
}

Wie Sie sehen k?nnen, haben wir die Comparable-Schnittstelle für Node implementiert und die CompareTo-Methode überschrieben.

Um es zun?chst zu testen, erstellen wir 10 Knotenobjekte, fügen sie der Liste hinzu und ?ndern dann die Reihenfolge.

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

Das Ergebnis wird wie folgt angezeigt:

num=7 name=node
num=0 name=node
num=5 name=node
num=9 name=node
num=6 name=node
num=3 name=node
num=4 name=node
num=8 name=node
num=1 name=node
num=2 name=node

Jetzt ist die Ausgabe nicht in Ordnung, als n?chstes verwenden wir Collections.sort, um sie zu sortieren.

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		Collections.sort(list);
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

Collections.sort vergleicht tats?chlich gem?? der Definition in der CompareTo-Methode. Wir haben zuvor die Sortierung in aufsteigender Reihenfolge der Anzahl definiert. Jetzt sind die Sortierergebnisse wie folgt:

num=0 name=node
num=1 name=node
num=2 name=node
num=3 name=node
num=4 name=node
num=5 name=node
num=6 name=node
num=7 name=node
num=8 name=node
num=9 name=node

Comparator

Comparator befindet sich im Paket java.util und ist im Wesentlichen ein externer Komparator. Wenn eine Klasse Comparable nicht intern implementiert oder Comparable implementiert, die Vergleichsmethode jedoch nicht Ihren Wünschen entspricht, k?nnen wir die Implementierung von Comparator in Betracht ziehen. In der Comparator-Schnittstelle gibt es eine Vergleichsmethode, deren Verwendung mit der von CompareTo in Comparable identisch ist.

Wir müssen einen Komparator an die Sortiermethode übergeben, um die Sortierreihenfolge zu steuern. Wir k?nnen die Verwendung mehrerer Sortiermethoden überprüfen und feststellen, dass sie einen Comparator-Parameter übergeben k?nnen.

Collections.sort(List<T> list, Comparator<? super T> c);
Arrays.sort(T[] a, Comparator<? super T> c);

?ndern Sie unser vorheriges Node-Objekt und implementieren Sie Comparable nicht mehr.

public class Node{
	
	private int num;
	
	private String name;

	@Override
	public String toString() {
		return "num=" + num + " name=" + name;
	}

	public Node(int num, String name) {
		super();
		this.num = num;
		this.name = name;
	}

	public Node() {
		super();
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

Wir versuchen, in absteigender Reihenfolge zu sortieren, indem wir einen Komparator übergeben.

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		
		Collections.sort(list, new Comparator<Node>() {
            @Override
            public int compare(Node o1, Node o2) {
                return o2.getNum()-o1.getNum();
            }
        });
		
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

Die Ergebnisse sind wie folgt:

num=9 name=node
num=8 name=node
num=7 name=node
num=6 name=node
num=5 name=node
num=4 name=node
num=3 name=node
num=2 name=node
num=1 name=node
num=0 name=node

Comparator implementiert den Vergleich in umgekehrter Reihenfolge.

Zusammenfassung

Comparable ist ein interner Komparator und Comparator ist ein externer Komparator. Wenn die Klasse die Comparable-Schnittstelle nicht implementiert, aber sortiert werden muss, k?nnen wir darüber nachdenken mit Komparator. Aus einer anderen Perspektive ist die Kopplung bei der Verwendung der Comparable-Schnittstelle gr??er als die von Comparator, denn wenn wir den Vergleichsalgorithmus ?ndern müssen, müssen wir auch die Implementierungsklasse von Comparable ?ndern.

Dieser Artikel stammt aus der Kolumne Java Quick Start Jeder ist willkommen, gemeinsam zu diskutieren und zu lernen!

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen vergleichbar und Komparator in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erkl?rung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Hei?e KI -Werkzeuge

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

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

Hei?e Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Bitcoin -Marktbestellungen und eingeschr?nkte Bestellungen verstehen: detailliertes Tutorial Bitcoin -Marktbestellungen und eingeschr?nkte Bestellungen verstehen: detailliertes Tutorial Jul 10, 2025 pm 09:03 PM

In der Welt des Handels mit digitaler W?hrung ist das Verst?ndnis und die F?higkeiten bei der Verwendung verschiedener Auftragstypen der Schlüssel zu erfolgreichen Transaktionen. Es ist so einfach wie das Fahren eines Fahrzeugs erfordert das Beherrschen des Beschleunigers und der Bremsen. Marktbestellungen und eingeschr?nkte Bestellungen sind die beiden grundlegendsten und leistungsst?rksten Tools, die alle H?ndler beherrschen müssen. Egal, ob Sie auf Mainstream -Handelsplattformen wie Binance Binance, Ouyi Okx, Huobi oder Gate.io Sesam Open Door arbeiten, alle bilden den Kern Ihrer Handelsstrategie.

Vergleich der Unterschiede und Vor- und Nachteile von USDC, DAI und TUSD (kürzlich aktualisiert) Vergleich der Unterschiede und Vor- und Nachteile von USDC, DAI und TUSD (kürzlich aktualisiert) Jul 10, 2025 pm 09:09 PM

Der Kernunterschied zwischen USDC, DAI und TUSD liegt im Ausstellungsmechanismus, im Kollateralverm?gen und im Risikomerkmal. 1. USDC ist ein zentraler Stablecoin, der von Circle herausgegeben wird und durch Bargeld und kurzfristige Staatsanleihen besichert ist. Die Vorteile sind Einhaltung und transparente, starke Liquidit?t und hohe Stabilit?t, aber es besteht das Risiko einer zentralisierten überprüfung und eines Einzelpunktversagens. 2. Dai ist ein dezentrales Stablecoin, das durch das Makerdao -Protokoll erzeugt wird, und das Kollateral ist ein Krypto -Verm?genswert. Es hat die Vorteile von Anti-Censuring, Transparenz in der Kette und freie freie, aber es ist auch systemische Risiken, Abh?ngigkeiten von zentralisierten Verm?genswerten und Komplexit?tsproblemen ausgesetzt. 3.. TUSD ist ein zentraler Stablecoin, der in Echtzeit-Reserve-Proofs in Echtzeit betont und eine h?here Transparenzüberprüfung mit h?herer Frequenz liefert, jedoch einen geringen Marktanteil und eine schwache Liquidit?t aufweist. Die drei sind Kollateralypen und Dezentralisierung

Java Optionales Beispiel Java Optionales Beispiel Jul 12, 2025 am 02:55 AM

Optional kann eindeutig Absichten ausdrücken und das Code -Rauschen für Nullurteile reduzieren. 1. optional.ofnullable ist eine h?ufige M?glichkeit, mit Null -Objekten umzugehen. Wenn beispielsweise Werte von Karten entnommen werden, kann Orelse verwendet werden, um Standardwerte bereitzustellen, damit die Logik klarer und pr?zise ist. 2. Verwenden Sie Kettenaufrufkarten, um verschachtelte Werte zu erreichen, um NPE sicher zu vermeiden, und enden Sie automatisch, wenn eine Verbindung NULL ist, und senden Sie den Standardwert zurück. 3. Filter kann zur bedingten Filterung verwendet werden, und nachfolgende Operationen werden weiterhin nur dann durchgeführt, wenn die Bedingungen erfüllt sind. Andernfalls wird er direkt zu Orelse springen, was für das leichte Gesch?ftsverurteilungsurteil geeignet ist. 4. Es wird nicht empfohlen, optional zu überbeanspruchen, z. B. Grundtypen oder einfache Logik, die die Komplexit?t erh?hen, und einige Szenarien kehren direkt zur NU zurück.

Wie repariere ich java.io.notserializableException? Wie repariere ich java.io.notserializableException? Jul 12, 2025 am 03:07 AM

Die Kernprobleme für die Begegnung mit Java.io.iSserializableException besteht darin, sicherzustellen, dass alle Klassen, die serialisiert werden müssen, die serialisierbare Schnittstelle implementieren und die Serialisierungsunterstützung verschachtelter Objekte überprüfen. 1. Hinzufügen von Ger?ten zur Hauptklasse; 2. Stellen Sie sicher, dass die entsprechenden Klassen von benutzerdefinierten Feldern in der Klasse auch serialisierbar implementieren; 3.. Verwenden Sie vorübergehend Felder, die nicht serialisiert werden müssen. 4. überprüfen Sie die nichtserialisierten Typen in Sammlungen oder verschachtelten Objekten. 5. überprüfen Sie, welche Klasse die Schnittstelle nicht implementiert. 6. Berücksichtigen Sie das Ersatzdesign für Klassen, die nicht ge?ndert werden k?nnen, z. B. Schlüsseldaten oder Verwendung serialisierbarer Zwischenstrukturen; 7. überlegen Sie sich

Wie kann man eine Karte in Java iterieren? Wie kann man eine Karte in Java iterieren? Jul 13, 2025 am 02:54 AM

Es gibt drei g?ngige Methoden, um die Karte in Java zu durchqueren: 1. Verwenden Sie ein Eintragssatz, um gleichzeitig Schlüssel und Werte zu erhalten, was für die meisten Szenarien geeignet ist. 2. Verwenden Sie Schlüsselet oder Werte, um Schlüssel oder Werte zu durchqueren. 3. Verwenden Sie Java8s Foreach, um die Codestruktur zu vereinfachen. Der Eintragssatz gibt einen Satz ein, der alle Schlüsselwertpaare enth?lt, und jede Schleife wird das MAP.Entry-Objekt abgew?hlt, das für h?ufige Zugriff auf Tasten und Werte geeignet ist. Wenn nur Schlüsseln oder Werte erforderlich sind, k?nnen Sie Schlüsselset () bzw. values () aufrufen, oder Sie k?nnen den Wert über MAP.get (Schlüssel) beim Durchqueren der Tasten erhalten. Java 8 kann nach ((Schlüssel, Wert)-& gt verwenden

Vergleichbarer VS -Komparator in Java Vergleichbarer VS -Komparator in Java Jul 13, 2025 am 02:31 AM

In Java wird vergleichbar verwendet, um die Standardsortierregeln intern zu definieren, und der Komparator wird verwendet, um die logische Sortierlogik extern zu definieren. 1. Vergleichbar ist eine Schnittstelle, die von der Klasse selbst implementiert wird. Es definiert die natürliche Ordnung, indem die Vergleichsmethode umgeschrieben wird. Es ist für Klassen mit festen und am h?ufigsten verwendeten Sortiermethoden wie String oder Ganzzahl geeignet. 2. Comparator ist eine extern definierte funktionale Schnittstelle, die über die Vergleich () -Methode implementiert wird und für Situationen geeignet ist, in denen mehrere Sortierungsmethoden für dieselbe Klasse erforderlich sind, der Klassenquellcode nicht ge?ndert werden kann oder die Sortierlogik h?ufig ge?ndert wird. Der Unterschied zwischen den beiden besteht darin, dass vergleichbar nur eine Sortierlogik definieren und die Klasse selbst ?ndern muss, w?hrend der Vergleich

Wie kann ich JSON in Java analysieren? Wie kann ich JSON in Java analysieren? Jul 11, 2025 am 02:18 AM

Es gibt drei allgemeine M?glichkeiten, JSON in Java zu analysieren: Verwenden Sie Jackson, GSON oder Org.json. 1. Jackson eignet sich für die meisten Projekte mit guten Leistung und umfassenden Funktionen und unterstützt die Konversions- und Annotationszuordnung zwischen Objekten und JSON -Zeichenfolgen. 2. GSON ist besser für Android-Projekte oder leichte Bedürfnisse geeignet und einfach zu bedienen, aber bei den Umgang mit komplexen Strukturen und Hochleistungsszenarien leicht unterlegen. 3.org.json ist für einfache Aufgaben oder kleine Skripte geeignet und wird aufgrund der mangelnden Flexibilit?t und der Art von Sicherheit für gro?e Projekte nicht empfohlen. Die Wahl sollte aufgrund der tats?chlichen Bedürfnisse entschieden werden.

Outlook -Verknüpfung für neue E -Mails Outlook -Verknüpfung für neue E -Mails Jul 11, 2025 am 03:25 AM

So erstellen Sie schnell neue E -Mails in Outlook wie folgt: 1. Die Desktop -Version verwendet die T -Shortcut -Taste Strg Shift M, um ein neues E -Mail -Fenster direkt zu erzielen. 2. Die Webversion kann neue E-Mails in One-Klick erstellen, indem ein Lesezeichen mit JavaScript (z. B. JavaScript: document.querySelector ("Divrole = 'Button'") erstellt. Click ()); 3.. Verwenden Sie Browser-Plug-Ins (z. B. Vimium, CrxMouseGerger), um die Schaltfl?che "Neue Mail" auszul?sen. 4. Windows-Benutzer k?nnen auch "neue Mails" ausw?hlen, indem Sie mit der rechten Maustaste auf das Outlook-Symbol der Taskleiste klicken

See all articles