Java eigene Liste implementieren

schlelia

Aktives Mitglied
Hallo liebe Community,
ich habe ein Problem bei folgender Aufgabe:
Bildschirmfoto 2022-01-08 um 12.56.14.png
Meine Ideen bisher sind das hier:
Java:
import java.util.Comparator;

public class FlexibleList<T>{
    private final T datafield;
    private T next;
    private final Comparator C;
    private FlexibleList(T datafield, T next, Comparator C) {
        this.datafield = datafield;
        this.next = next;
        this.C = C;
    }
    public static <T> FlexibleList<T> createInstance(Comparator c) {
        return new FlexibleList<>()
    }
    public static <T> FlexibleList<T> createInstance() {
    }
}
Ich verstehe nicht ganz wie ich das machen soll, vor allem wenn das Wächterelement hinten ist. Ist mein Konstruktor und die Attribute richtig? Denn da zeigt mir mekine IDE auch noch Warnungen, also z.B.
Private field 'next' is assigned but never accessed oder Raw use of parameterized class 'Comparator'.
Ich danke für jede Hilfe
 

temi

Top Contributor
Du verwendest den Parameter Comparator c nicht und da die Instanzvariable final ist, muss sie im Konstruktor zugewiesen werden. Du musst also in deinen statischen Methoden den Konstruktor mit seinen Parametern aufrufen.

Variablennamen sollten in Java immer mit einem Kleinbuchstaben beginnen und aussagekräftig sein, z. B.: "C" => "comparator"
 

temi

Top Contributor
Ach so, und das "raw use of parameterized class Comparator" liegt daran das du den Rohtyp Comparator verwendest. Das entspricht einem Comparator<Object>. Besser wäre es du nutzt den generischen Typen.
 

schlelia

Aktives Mitglied
Du verwendest den Parameter Comparator c nicht und da die Instanzvariable final ist, muss sie im Konstruktor zugewiesen werden. Du musst also in deinen statischen Methoden den Konstruktor mit seinen Parametern aufrufen.

Variablennamen sollten in Java immer mit einem Kleinbuchstaben beginnen und aussagekräftig sein, z. B.: "C" => "comparator"
Java:
public class FlexibleList<T>{
    private final T datafield;
    private T next;
    private Comparator<T> comparator;
    private FlexibleList(T datafield, T next, Comparator<T> comparator) {
        this.comparator = comparator;
        this.datafield = datafield;
        this.next = next;
    }
So müsste der Konstruktur sein. Jetzt kommt immer noch die Warnung "Private field 'next' is assigned but never accessed".
 

Neue Themen


Oben