Java 8 Vergleicher vergleicht nicht

8

Nehmen wir an, ich habe eine Pair-Klasse

%Vor%

Und ich möchte es sortieren, zuerst nach dem ersten Wert, dann nach dem zweiten Wert. Jetzt 'wenn ich das tue

%Vor%

Alles funktioniert gut und gut, die Liste wird nach den ersten Werten des Paares sortiert, aber wenn ich das tue

%Vor%

Es schlägt mit Fehler fehl

%Vor%

Ok, es könnte also nicht in der Lage sein, auf die Argumente zu schließen, also wenn ich das tue

%Vor%

Es schlägt mit Fehler fehl

%Vor%

Warum funktioniert es zum Vergleichen () und nicht zum Vergleichen (). thenComparing ()?

    
Mayur Kulkarni 09.02.2017, 03:32
quelle

2 Antworten

5

Der Fehler scheint mit den generischen Parametern von Pair zu korrelieren. Eine Umgehung, um einen expliziten Typ zu verwenden, wie Sie es versucht haben:

%Vor%

Beachten Sie comparingInt() , wodurch die Anzahl der zu spezifizierenden Parameter reduziert wird und die Leistung verbessert wird, indem das Boxing vermieden wird.

Eine andere Lösung ist die Typreferenz zu parametrisieren:

%Vor%     
shmosel 09.02.2017, 04:12
quelle
3

Es sollte sein:

%Vor%

Der erste Typparameter bezieht sich auf den Typ, der an Comparator übergeben wird. Der zweite Typ-Parameter bezieht sich auf den Typ, mit dem der Vergleicher effektiv verglichen werden sollte.

    
theKidOfArcrania 09.02.2017 03:37
quelle

Tags und Links