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 ()?
Der Fehler scheint mit den generischen Parametern von Pair
zu korrelieren. Eine Umgehung, um einen expliziten Typ zu verwenden, wie Sie es versucht haben:
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%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.
Tags und Links java java-8 comparator