Comparator

KonradN

Super-Moderator
Mitarbeiter
Comparable ist ein Interface, dass eine Klasse implementieren kann und womit die Klasse dann die natürliche Ordnung ausdrücken kann.

Comparator ist etwas externes das etwas anderes vergleichen kann. Damit kann man beliebige Sortierungen darstellen.

Beispiel: Du verwaltest Mitarbeiter. Jetzt kann man sich überlegen, was hier als natürliche Ordnung angesehen wird. Das könnte z.B. die Sortierung nach Name sein.

Aber ggf. brauchst du auch andere Sortierungen:
  • nach Gehalt
  • nach Anzahl Überstunden
  • nach Abteilungen
  • nach Betriebszugehörigkeit
  • ….
 

Mariexshhx

Bekanntes Mitglied
Comparable ist ein Interface, dass eine Klasse implementieren kann und womit die Klasse dann die natürliche Ordnung ausdrücken kann.

Comparator ist etwas externes das etwas anderes vergleichen kann. Damit kann man beliebige Sortierungen darstellen.

Beispiel: Du verwaltest Mitarbeiter. Jetzt kann man sich überlegen, was hier als natürliche Ordnung angesehen wird. Das könnte z.B. die Sortierung nach Name sein.

Aber ggf. brauchst du auch andere Sortierungen:
  • nach Gehalt
  • nach Anzahl Überstunden
  • nach Abteilungen
  • nach Betriebszugehörigkeit
  • ….
was genau ist mit natürlicher Ordnung gemeint?
 

httpdigest

Top Contributor
ich möchte eine Liste von Zahlen nach ihrem kleinsten Primfaktor ornden. Kann ich das nur mit einem Comparator ?
Ein Comparator<Integer> würde sich hier definitiv anbieten, da du ja eine andere Ordnung als die "natürlich Ordnung" der Zahlen haben möchtest.
Integer selbst implementiert Comparable<Integer> anhand der natürlichen Ordnung der ganzen Zahlen, die du ja nicht haben möchtest. Außerdem kannst du natürlich die java.lang.Integer Klasse nicht anpassen.
Du könntest also z.B. einfach einen eigenen Comparator<Integer> erzeugen:
Java:
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class SortBySmallestPrimeFactor {
  // erstelle einen Comparator, der basierend auf smallestDivisor sortiert
  public static final Comparator<Integer> bySmallestPrimeFactor =
          Comparator.comparingInt(SortBySmallestPrimeFactor::smallestDivisor);

  // ermittle den kleinsten Teiler von 'n'. Dieser ist auch immer eine Primzahl.
  private static int smallestDivisor(Integer n) {
    for (int i = 2; i * i <= n; i++)
      if (n % i == 0)
        return i;
    return n;
  }

  // Test
  public static void main(String[] args) {
    List<Integer> numbers = Arrays.asList(2, 4, 5, 6, 7, 8, 9, 11, 16, 200, 400);
    // liest sich mit dem Comparator sehr gut "sort by smallest prime factor"
    numbers.sort(bySmallestPrimeFactor);
    System.out.println(numbers);
  }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
richis-fragen Mehrere Spalten mit Comparator sortieren Java Basics - Anfänger-Themen 2
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
M Comparator Java Basics - Anfänger-Themen 25
berserkerdq2 Wie lege ich ein Attribut comparator an? Java Basics - Anfänger-Themen 13
W Personen sortieren mit Comparator Java Basics - Anfänger-Themen 9
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
V Collections ArrayList mit Comparator sortieren Java Basics - Anfänger-Themen 16
B Collections Objektreferenz-ID in der Ausgabe (Comparator Interface) Java Basics - Anfänger-Themen 2
R Methode zwei Sortierkriterien der Klasse Comparator übergeben Java Basics - Anfänger-Themen 4
O Lambda Ausdrücke in einem Comparator Java Basics - Anfänger-Themen 4
A Priority Queue / Comparator Java Basics - Anfänger-Themen 6
I Comparator<T> Interface als Methodenparamter Java Basics - Anfänger-Themen 4
L Binäre Suche mit Comparator Java Basics - Anfänger-Themen 5
N Comparable bzw Comparator Java Basics - Anfänger-Themen 5
J Comparator Java Basics - Anfänger-Themen 21
A Comparator Java Basics - Anfänger-Themen 4
G Interface java.util.Comparator: Wieso muss nur die Methode compare() implementiert werden Java Basics - Anfänger-Themen 2
V Comparator Java Basics - Anfänger-Themen 16
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
M Comparable und Comparator nicht ganz klar Java Basics - Anfänger-Themen 1
B Comparable & Comparator Java Basics - Anfänger-Themen 9
C Comparator und private Variablen Java Basics - Anfänger-Themen 7
S Comparator für Generiks Java Basics - Anfänger-Themen 6
Helgon Interface Comparator wird nicht instanziert Java Basics - Anfänger-Themen 3
C Comparator mit Double Werten? Java Basics - Anfänger-Themen 12
S Unterschied Comparable und Comparator Java Basics - Anfänger-Themen 2
E Comparator sortiert falsch... Java Basics - Anfänger-Themen 2
M Comparator Java Basics - Anfänger-Themen 7
B OOP Logikhilfe zum Comparator 2 Java Basics - Anfänger-Themen 12
B OOP Logikhilfe zum Comparator Java Basics - Anfänger-Themen 11
G Comparator Problem Java Basics - Anfänger-Themen 5
X eigener Mergesort auf generischen Typen mit Comparator Java Basics - Anfänger-Themen 6
H Comparable und Comparator Java Basics - Anfänger-Themen 22
Z Comparator Verständnisfrage Java Basics - Anfänger-Themen 5
B OOP Comparator - Sortierung "optisch" Darstellen Java Basics - Anfänger-Themen 17
A JTable sortieren mit einem Comparator Java Basics - Anfänger-Themen 2
S Comparator / Comparable ? Java Basics - Anfänger-Themen 3
G Objekte mit dem Attribut title mit Comparator sortieren Java Basics - Anfänger-Themen 5
P unchecked conversion to conform to Comparator Java Basics - Anfänger-Themen 3
G Comparator- methode compare exception werfen Java Basics - Anfänger-Themen 4
B interface Comparator Java Basics - Anfänger-Themen 4
M Hilfe bei der Erstellung der Comparator Klasse Java Basics - Anfänger-Themen 10
M ArrayList sortieren mittels Comparator Java Basics - Anfänger-Themen 10
G Sortieren ohne Comparator? Java Basics - Anfänger-Themen 4
G Comparator Java Basics - Anfänger-Themen 10
S Frage zu Comparator Java Basics - Anfänger-Themen 3
G ArrayList und Comparator Java Basics - Anfänger-Themen 6
M Comparator - Sortierkriterium Java Basics - Anfänger-Themen 11
L Comparator Java Basics - Anfänger-Themen 5
T Problem mit Comparator! Java Basics - Anfänger-Themen 7
C Anstatt Spalte, Zeile mit Comparator sortieren . Java Basics - Anfänger-Themen 5
B Liste sortieren mit Comparator Java Basics - Anfänger-Themen 2
D Frage zu Collection.sort bzw. Comparator u. Comparable Java Basics - Anfänger-Themen 2
S JTable mit Comparator sortieren, die Frage ist wo? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
W Comparator Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben