Hilfsklasse zum Vergleichen

Landei

Top Contributor
compare oder compareTo Methoden schreiben ist doof. Und selbst wenn einem die IDE etwas austomatisch bastelt, sieht es oft furchtbar aus. Hier ein Lösungsvorschlag, zu dem ich gerne Eure Meinung hören würde. Zuerst die Hilfsklasse:

Java:
import java.util.Comparator;

public enum Compare {
    LT(-1), EQ(0), GT(1);
    
    public final int toInt;
    
    private Compare(int toInt) {
        this.toInt = toInt;
    }

    public Compare andThen(boolean v1, boolean v2) {
        if(this == EQ) return v1 == v2 ? EQ : v1 ? GT : LT;
        else return this;
    }
 
    public Compare andThen(char v1, char v2) {
        if(this == EQ) return v1 < v2 ? LT : v1 > v2 ? GT : EQ;
        else return this;
    }

    public Compare andThen(int v1, int v2) {
        if(this == EQ) return v1 < v2 ? LT : v1 > v2 ? GT : EQ;
        else return this;
    }

    //u.s.w. für Primitive und Arrays    

    public <T extends Comparable<? super T>> Compare andThen(T v1, T v2) {
        return this == EQ  ? fromInt(v1.compareTo(v2)) : this;
    }

    public <T> Compare andThen(T v1, T v2, Comparator<? super T> comparator) {
        return this == EQ  ? fromInt(comparator.compare(v1, v2)) : this;
    }
     
    private Compare fromInt(int compResult) {
        return compResult < 0 ? LT : compResult > 0 ? GT : EQ;
    } 
}

So sieht die Anwendung aus:


Java:
import static somepackage.Compare.*;

class Person implements Comparable<Person> {
   private String firstName;   
   private String lastName;   
   private Date birthDate;   

   ...

   public int compareTo(Person that) {
       return EQ
         .andThen(this.lastName, that.lastName)
         .andThen(this.firstName, that.firstName)
         .andThen(this.birthDate, that.birthDate)
         .toInt;  
   }
}

Man beachte, dass unnötige Vergleiche (wenn das Ergebnis bereits feststeht) nicht durchgeführt werden.
 

s4ke

Bekanntes Mitglied
Es verwundert mich immer wieder, wie genial manche Leute einfach sein können. Der Code, wäre mir die Idee gekommen, wäre um einiges länger geworden, weil ich ternäre Operatoren mal gar nicht benutze...
 

mvitz

Top Contributor
Nach dem "Pattern" könnte man dann ja vermutlich auch die anderen Builder mit ENUM machen. Ist vermutlich dann Geschmackssache ob ENUM oder Klasse.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Threads Kann mir jemand helfen eine parallele Hilfsklasse zu implementieren..? Allgemeine Java-Themen 3
G Hilfsklasse Allgemeine Java-Themen 8
Ü Arrays vergleichen Allgemeine Java-Themen 59
Ü Methoden Arrays vergleichen - Methode Allgemeine Java-Themen 1
D Zwei Listen vergleichen Allgemeine Java-Themen 7
F 2 JsonArray vergleichen, geht es auch einfacher ? Allgemeine Java-Themen 3
N String vergleichen. Allgemeine Java-Themen 27
B Einfach Elemente zweier Arraylisten kreuz und quer vergleichen, min und max Problem? Allgemeine Java-Themen 16
Aboya Char Array rekursiv vergleichen Allgemeine Java-Themen 15
Curtis_MC Pointer mit ArrayList vergleichen Allgemeine Java-Themen 6
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
D Erste Schritte Arrays vergleichen und die zahlen die nur einmal vorkommen ausgeben Allgemeine Java-Themen 5
E Elemente innerhalb einer ArrayList vergleichen Allgemeine Java-Themen 33
R Optimierung beim Vergleichen von 2 Bildern Allgemeine Java-Themen 23
CptK Input/Output Buttonwerte vergleichen Allgemeine Java-Themen 5
J Mockito - Objekte miteinander vergleichen (equals) Allgemeine Java-Themen 6
Meeresgott Best Practice Strings auf Inhalte vergleichen Allgemeine Java-Themen 1
N DNA Strings vergleichen Allgemeine Java-Themen 1
C Input/Output Textdateien vergleichen Allgemeine Java-Themen 3
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
W Variablen Dates vergleichen Allgemeine Java-Themen 7
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
J Farben mit comparing vergleichen Allgemeine Java-Themen 3
Dechasa Java 8 - Datum vergleichen Allgemeine Java-Themen 5
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
H Strings vergleichen Allgemeine Java-Themen 9
Y inhalte aus 2 unterschiedlichen Arrays miteinander vergleichen Allgemeine Java-Themen 12
D Pattern mit Pattern vergleichen Allgemeine Java-Themen 3
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
A Kann String nicht vergleichen (Android) Allgemeine Java-Themen 4
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
D Variablen java.io.File zum vergleichen abspeichern Allgemeine Java-Themen 1
7 6 int variablen vergleichen Allgemeine Java-Themen 34
E Lesen von mehrere Csv-Datei und ihre Inhalte vergleichen Allgemeine Java-Themen 3
R Int werte vergleichen und Anzahl Paare ausgeben Allgemeine Java-Themen 4
OnDemand Spalten vergleichen Java Allgemeine Java-Themen 25
C Rechenzeit verschiedener Algorithmen vergleichen Allgemeine Java-Themen 4
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
S String vergleichen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
N Variablen Positionen vergleichen ??? Allgemeine Java-Themen 2
A Bilder vergleichen auf gleichheit oder ähnlichkeit Allgemeine Java-Themen 8
J XML Dateien vergleichen Allgemeine Java-Themen 9
X Collections Hashmaps vergleichen Allgemeine Java-Themen 23
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
A PDF Content vergleichen Allgemeine Java-Themen 3
M Datentypen Referenzen oder seperate IDs vergleichen? Allgemeine Java-Themen 6
D Strings vergleichen; Komma ignorieren Allgemeine Java-Themen 3
J String nur erste Zeichen vergleichen Allgemeine Java-Themen 6
S Reports vergleichen Allgemeine Java-Themen 8
V ArrayList vergleichen mit .equals? Allgemeine Java-Themen 13
T Wörter Vergleichen Allgemeine Java-Themen 3
T Uhrzeiten vergleichen Allgemeine Java-Themen 4
P JAVA Bilder/Videos in Form von Files vergleichen Allgemeine Java-Themen 7
S Strings vergleichen Allgemeine Java-Themen 11
9 Dateinamen erfassen und vergleichen Allgemeine Java-Themen 6
S String Zeichen für Zeichen vergleichen Allgemeine Java-Themen 4
D String mit Wörterbuch vergleichen Allgemeine Java-Themen 12
I Input/Output Zeichenkette eingeben und vergleichen Allgemeine Java-Themen 2
S Datum vergleichen - ohne Hilfsmittel Allgemeine Java-Themen 8
1 zwei Strings vergleichen Allgemeine Java-Themen 16
F Vergleichen von Datumswerten Allgemeine Java-Themen 3
S Ergebnis von Cursor c1 mit Cursor c2 vergleichen Allgemeine Java-Themen 3
G Zwei bytes vergleichen Allgemeine Java-Themen 2
S Fixe Zahlen vergleichen Allgemeine Java-Themen 4
M Zeitangaben vergleichen Allgemeine Java-Themen 2
MonsterBit 2 Werte aus 2 Array vergleichen Allgemeine Java-Themen 10
1 String mit contains vergleichen (ignore case) Allgemeine Java-Themen 2
Developer_X Problem mit String vergleichen Allgemeine Java-Themen 3
Z zwei Daten vergleichen Allgemeine Java-Themen 4
nrg Leere Objektreferenz mit != null vergleichen Allgemeine Java-Themen 4
ARadauer PDF Vergleichen Allgemeine Java-Themen 16
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
O Probleme beim vergleichen von 2 Datumsangaben Allgemeine Java-Themen 2
N 2 files auf gleichheit vergleichen Allgemeine Java-Themen 5
V Datum vergleichen Allgemeine Java-Themen 7
T Shapes vergleichen? Zeichen erkennen? Allgemeine Java-Themen 7
S Datei auf Server mit lokaler Datei vergleichen Allgemeine Java-Themen 4
M Warum Strings mit equals vergleichen... Allgemeine Java-Themen 6
G Datum vergleichen Allgemeine Java-Themen 5
A zwei listen vergleichen und unterschiede anzeigen Allgemeine Java-Themen 3
J Inhalt von HashMap vergleichen Allgemeine Java-Themen 3
S Anfänger: 2 Objekte vergleichen? Allgemeine Java-Themen 8
Y Mal wieder vergleichen von Strings.[Leider noch ein Problem] Allgemeine Java-Themen 18
K zipdatei mit txtdatei vergleichen Allgemeine Java-Themen 9
S 2 URIs vergleichen Allgemeine Java-Themen 4
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
QDog beliebige Objekte vergleichen Allgemeine Java-Themen 2
G schnell Strings vergleichen Allgemeine Java-Themen 4
V Zwei ArrayList(s) vergleichen Allgemeine Java-Themen 6
D Vergleichen von Datensätzen Allgemeine Java-Themen 2
M Name von Wochentagen vergleichen Allgemeine Java-Themen 3
J Dateien binär vergleichen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben