linkedlist generische klassen

H

Heyoka955

Gast
Das ist mir zu undurchsichtig. Wieso erstellst du nicht erst einmal eine einfache verkettete Liste mit den Klassen Item und ItemList. Also nicht generisch. Dann kannst du erst einmal ausprobieren, wie man sich von Objekt zu Objekt durchhangelt. Außerdem ist dein "insert" ein "append", da es die Objekte immer am Ende einfügt. Ein "insert" würde sie aber da einfügen, wo gerade das aktuelle Element ist, entweder davor oder danach.Und dann würde ich die Objekte auch mit "String" befüllen, um so die Sortierreihenfolge und den Inhalt voneinander abgrenzen zu können. Aus "ADCBE" soll ja "ABCDE" werden. Auf jeden Fall ist auch ein "delete" notwendig, um Objekte an der aktuellen Prosition zu löschen.

Und dann wäre es gut, wenn es OOP wäre, dazu ist JAVA ja da.
Ja aber denke das reicht jetzt firm Anfang.
 
H

Heyoka955

Gast
Super, danke. War ich offensichtlich blind und hab zu schnell/kurz geschaut.

Ist auch eine schöne Box bezüglich Iterable ... Also reicht das freie Buch auch für sowas voll und ganz aus!
ich habe keine ahnug wie ich das sortieren soll. DAs ist derzeit mein code.


Java:
 public void sortingLL(){
  ListNode<T> current = first;
  ListNode<T> c = current.getNext();
  
  
  for(int i = 1; i < size(); i++) {
   for(int j = 0; j < size(); j++){
    if(current.value.compareTo(c.value) <= 0){
     
     
     
     
    }
    current = current.getNext();
    
    
    
    
    
   }
   
   
   c = c.getNext();
   
   
   
  }
  
       
    
    
    
 }
 
Zuletzt bearbeitet von einem Moderator:
K

kneitzel

Gast
Also es gibt zwei Möglichkeiten:

a) du sortiert die Liste erst auf Aufruf. das hat den Vorteil, dass du viel Zeit verballerst, wenn du es sortieren musst, aber dafür geht das Einfügen schneller.

b) du hast generell eine sortierte Liste. Dann brauchst Du keinen Sortier Aufruf mehr. Das Einfügen dauert dann aber halt etwas länger....

Generell macht es durchaus Sinn, b) zu wählen. Dann musst Du Dir nur Gedanken machen, wie das mit dem Einfügen gebaut werden soll. Wenn du es nach a) machen willst, dann müsstest Du Dir erst einmal Gedanken machen, wie Du sortieren willst. Da gibt es diverse Ansätze. Bubble Sort wäre da eine einfache Alternative.

Egal, was Du wie machen willst: Der erste Schritt ist immer, dass Du Dir Gedanken machst, wie etwas funktionieren soll. Formulier es aus in einer Art Pseudo Code. Spiel es ggf. auf einem Zettel etwas durch. Erst dann kannst Du es implementieren. Ohne genaue Vorstellung wirst Du kaum eine Chance haben, etwas funktionierendes zu entwickeln.
 
H

Heyoka955

Gast
Antwort
Also es gibt zwei Möglichkeiten:

a) du sortiert die Liste erst auf Aufruf. das hat den Vorteil, dass du viel Zeit verballerst, wenn du es sortieren musst, aber dafür geht das Einfügen schneller.

b) du hast generell eine sortierte Liste. Dann brauchst Du keinen Sortier Aufruf mehr. Das Einfügen dauert dann aber halt etwas länger....

Generell macht es durchaus Sinn, b) zu wählen. Dann musst Du Dir nur Gedanken machen, wie das mit dem Einfügen gebaut werden soll. Wenn du es nach a) machen willst, dann müsstest Du Dir erst einmal Gedanken machen, wie Du sortieren willst. Da gibt es diverse Ansätze. Bubble Sort wäre da eine einfache Alternative.

Egal, was Du wie machen willst: Der erste Schritt ist immer, dass Du Dir Gedanken machst, wie etwas funktionieren soll. Formulier es aus in einer Art Pseudo Code. Spiel es ggf. auf einem Zettel etwas durch. Erst dann kannst Du es implementieren. Ohne genaue Vorstellung wirst Du kaum eine Chance haben, etwas funktionierendes zu entwickeln.
ich hatte an bubblesort gedacht aber wie greife ich auf die werte zu wenn diese fehler kommen.

11712
 
K

kneitzel

Gast
Wenn solche Fehler kommen schaut man sich die Java Grundlagen an. Was für Vergleiche gibt es? Und dann nutzt man, was es eben gibt.

Daher immer der Hinweis, dass Du Dir doch die Java Grundlagen erarbeiten solltest. In diesem Fall wäre https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html eine Seite, die das Notwendige enthält. Java ist eine Insel wird das aber bestimmt auch haben und das Buch Java The Complete Reference selbstverständlich auch.

Wenn du Englisch sprichst, dann lernst Du das doch auch. Grammatik, Vokabeln, ... Du gehst doch nicht hin und sagst: Ich kann Deutsch, das wird schon irgendwie gehen.
 
H

Heyoka955

Gast
Wenn solche Fehler kommen schaut man sich die Java Grundlagen an. Was für Vergleiche gibt es? Und dann nutzt man, was es eben gibt.

Daher immer der Hinweis, dass Du Dir doch die Java Grundlagen erarbeiten solltest. In diesem Fall wäre https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html eine Seite, die das Notwendige enthält. Java ist eine Insel wird das aber bestimmt auch haben und das Buch Java The Complete Reference selbstverständlich auch.

Wenn du Englisch sprichst, dann lernst Du das doch auch. Grammatik, Vokabeln, ... Du gehst doch nicht hin und sagst: Ich kann Deutsch, das wird schon irgendwie gehen.
Habe ich aber hatte nix gefunden


<< Signed left shift
>> Signed right shift


Was soll ich damit anfangen ? Also ich kann das nicht so gut interpretieren. Das hat eher was mit Syntax Fehler zu tun.

Also
 
Zuletzt bearbeitet von einem Moderator:
H

Heyoka955

Gast
Habe ich aber hatte nix gefunden


<< Signed left shift
>> Signed right shift


Was soll ich damit anfangen ? Also ich kann das nicht so gut interpretieren. Das hat eher was mit Syntax Fehler zu tun.

Also
Wenn solche Fehler kommen schaut man sich die Java Grundlagen an. Was für Vergleiche gibt es? Und dann nutzt man, was es eben gibt.

Daher immer der Hinweis, dass Du Dir doch die Java Grundlagen erarbeiten solltest. In diesem Fall wäre https://docs.oracle.com/javase/tutorial/java/nutsandbolts/opsummary.html eine Seite, die das Notwendige enthält. Java ist eine Insel wird das aber bestimmt auch haben und das Buch Java The Complete Reference selbstverständlich auch.

Wenn du Englisch sprichst, dann lernst Du das doch auch. Grammatik, Vokabeln, ... Du gehst doch nicht hin und sagst: Ich kann Deutsch, das wird schon irgendwie gehen.
Habe ich aber hatte nix gefunden

Sorry hbe das falsche Bild gesendet, den Fehler hatte ich längst gebugged.

Es komtm der Fehler >> expected.
 

Tarrew

Top Contributor
Welcher Code führt zu welchem Fehler?

Hier hat keiner Lust Rätselraten zu spielen, bei den unvollständigen Infos, die du immer raushaust.
 
H

Heyoka955

Gast
Nur weil deine generischen Typen beide "T" heißen, haben die nichts miteinander zu tun.
Wenn du also in der ListNode Klasse sagt "ListNode<T extends Comparable<T>>"
und in deiner LinkedList-Klasse wieder "T" verwendest, bedeutet das nicht, dass dieses T wieder Comparable implementiert.

Das musst du schon separat nochmal angeben:
"class LinkedList< T extends Comparable<T>>".

Wenn du nichts angibst wie in deinem Fall, ist das das gleiche wie:
"class LinkedList< T extends Object>".

Und das passt nicht, wie du siehst.
Also diese Stelle, ich habe den Fehler da gefixt aber der zeigt einen Fehler wo er expected <<>> .
 

Anhänge

  • 11A78494-73BA-48A3-895D-1A1A9722A343.jpeg
    11A78494-73BA-48A3-895D-1A1A9722A343.jpeg
    99,6 KB · Aufrufe: 45

mihe7

Top Contributor
weil ich zu schnell tipopte
Tippfehler hin oder her: der Punkt ist, dass Du über eine Stunde wegen eines Fehlers nicht weiterkommst, den man mit ein wenig Übung selbst ohne IDE auf den ersten Blick sieht. Wenn man mit der Großzügigkeit bis zum Äußersten geht, dann darf es mit Hilfe der IDE keinesfalls länger als 5 Minuten dauern, um einen solchen Fehler zu erkennen und zu beheben.
 
H

Heyoka955

Gast
Tippfehler hin oder her: der Punkt ist, dass Du über eine Stunde wegen eines Fehlers nicht weiterkommst, den man mit ein wenig Übung selbst ohne IDE auf den ersten Blick sieht. Wenn man mit der Großzügigkeit bis zum Äußersten geht, dann darf es mit Hilfe der IDE keinesfalls länger als 5 Minuten dauern, um einen solchen Fehler zu erkennen und zu beheben.
Geany

Aber was ist denn jetzt mit meinem Bug den ich habe. Du hast den Fehler nicht ganz verstanden der Fehler ist nicht dass <= sondern dass er die Werte nicht vergleichen knn die im
Objekt gespeichert sind.
Da komtm eine Fehlermeldung!
 
K

kneitzel

Gast
Also die Grundlagen sind sehr wichtig. Die Seite, die ich genannt hatte, hat auch die Vergleichs-Operatoren aufgelistet. Das war ja erst einmal der erste ganz offensichtliche Fehler.

Und dann kommen wir zu dem nächsten Punkt: Verständnis der Aufgabe. Was hast Du bzw. was wurde denn gemacht, dass die Werte der implementierten Liste vergleichbar sind? Wenn Du Dir das anschaust dann solltest Du wissen, wie Du Werte vergleichen kannst.
=> Es ist existenziell, den Code zu verstehen!
 

mihe7

Top Contributor
Aber was ist denn jetzt mit meinem Bug den ich habe. Du hast den Fehler nicht ganz verstanden der Fehler ist nicht dass <= sondern dass er die Werte nicht vergleichen knn die im
Objekt gespeichert sind.
Da komtm eine Fehlermeldung!
Der Punkt ist: Du erkennst triviale Dinge nicht bzw. brauchst hierzu viel zu lange. Es bringt Dir nichts, Dich in irgendwelchen Ausreden zu flüchten: "Ich arbeite schnell", "Ich tippe zu schnell", "Ich programmiere erst seit Dezember" etc. etc. Es interessiert später niemanden, was Du für ein Problem hattest, wenn etwas nicht so läuft, wie es soll.
 
H

Heyoka955

Gast
Tippfehler hin oder her: der Punkt ist, dass Du über eine Stunde wegen eines Fehlers nicht weiterkommst, den man mit ein wenig Übung selbst ohne IDE auf den ersten Blick sieht. Wenn man mit der Großzügigkeit bis zum Äußersten geht, dann darf es mit Hilfe der IDE keinesfalls länger als 5 Minuten dauern, um einen solchen Fehler zu erkennen und zu beheben.
Also die Grundlagen sind sehr wichtig. Die Seite, die ich genannt hatte, hat auch die Vergleichs-Operatoren aufgelistet. Das war ja erst einmal der erste ganz offensichtliche Fehler.

Und dann kommen wir zu dem nächsten Punkt: Verständnis der Aufgabe. Was hast Du bzw. was wurde denn gemacht, dass die Werte der implementierten Liste vergleichbar sind? Wenn Du Dir das anschaust dann solltest Du wissen, wie Du Werte vergleichen kannst.
=> Es ist existenziell, den Code zu verstehen!
11716



das ist der fehler , wenn ich es mit compare to mache tritt auch ein fehler auf
 
K

kneitzel

Gast
Der Fehler ist und schon klar. Aber du scheinst erkannt zu haben, dass das Comparable ein Ansatz sein sollte. Was hast Du denn da probiert? Wie ist das denn prinzipiell zu verwenden?

Nur als kleine Erläuterung: Java bietet ein Überladen von Operatoren. Daher kann man Instanzen eben nicht generell mit Operatoren nutzen (Abgesehen von gewissen Dingen, die für Object erlaubt sind, wie z.B. ==)
Das ist in anderen Sprachen anders, also z.B. C++ oder c#: Das hat dann z.B. zur Folge, dass man Instanzen von Klassen (z.B. Strings) per == sinnvoll vergleichen kann und eben kein equals nutzen muss.
(Das nur am Rande, denn wer Informatik studiert, der sollte doch etwas mehr sehen als nur die Sprache selbst sondern etwas abstrahieren und dann so einen besseren Überblick bekommen ... hilft dann auch beim lernen neuer Sprachen und so.)
 
H

Heyoka955

Gast
Der Fehler ist und schon klar. Aber du scheinst erkannt zu haben, dass das Comparable ein Ansatz sein sollte. Was hast Du denn da probiert? Wie ist das denn prinzipiell zu verwenden?

Nur als kleine Erläuterung: Java bietet ein Überladen von Operatoren. Daher kann man Instanzen eben nicht generell mit Operatoren nutzen (Abgesehen von gewissen Dingen, die für Object erlaubt sind, wie z.B. ==)
Das ist in anderen Sprachen anders, also z.B. C++ oder c#: Das hat dann z.B. zur Folge, dass man Instanzen von Klassen (z.B. Strings) per == sinnvoll vergleichen kann und eben kein equals nutzen muss.
(Das nur am Rande, denn wer Informatik studiert, der sollte doch etwas mehr sehen als nur die Sprache selbst sondern etwas abstrahieren und dann so einen besseren Überblick bekommen ... hilft dann auch beim lernen neuer Sprachen und so.)
equals kenne ich aber hilft nicht weiter, ich glaube der bug liegt an compareabla. ich muss schauen wie ich das vergleichenn kann.

habe keinen ansatz derzeit



ich muss meinen compareto selbst implementieren denke ich mal.



11717
 
K

kneitzel

Gast
equals kenne ich aber hilft nicht weiter, ich glaube der bug liegt an compareabla. ich muss schauen wie ich das vergleichenn kann.

habe keinen ansatz derzeit
Das mit dem equals am Ende war nur ein Beispiel für das überladen von Operatoren was in anderen Sprachen teilweise möglich ist, aber eben nicht in Java. Das wäre etwas, das interessant sein könnte für jemanden, der etwas mit Informatik studiert....

Und ja, bei Deiner Aufgabe wird Comparable genutzt, also sollte man sich das einmal im Detail ansehen. Hätte man schon machen sollen, direkt nachdem man dieses Comparable das erste mal erblickt hat, denn ohne ein Verständnis von Comparable kann man ja nicht den Code verstehen, der eben genau dies nutzt....
 
H

Heyoka955

Gast
Das mit dem equals am Ende war nur ein Beispiel für das überladen von Operatoren was in anderen Sprachen teilweise möglich ist, aber eben nicht in Java. Das wäre etwas, das interessant sein könnte für jemanden, der etwas mit Informatik studiert....

Und ja, bei Deiner Aufgabe wird Comparable genutzt, also sollte man sich das einmal im Detail ansehen. Hätte man schon machen sollen, direkt nachdem man dieses Comparable das erste mal erblickt hat, denn ohne ein Verständnis von Comparable kann man ja nicht den Code verstehen, der eben genau dies nutzt....
ich will phyton lernen etc, aber erst die Grundlagen von java. Csharp ist cool und viele unternehmen verwenden c++
 
H

Heyoka955

Gast
Das mit dem equals am Ende war nur ein Beispiel für das überladen von Operatoren was in anderen Sprachen teilweise möglich ist, aber eben nicht in Java. Das wäre etwas, das interessant sein könnte für jemanden, der etwas mit Informatik studiert....

Und ja, bei Deiner Aufgabe wird Comparable genutzt, also sollte man sich das einmal im Detail ansehen. Hätte man schon machen sollen, direkt nachdem man dieses Comparable das erste mal erblickt hat, denn ohne ein Verständnis von Comparable kann man ja nicht den Code verstehen, der eben genau dies nutzt....
ich habe eine kline frage sollte man das compareable implmenetieren oder erben?

mein prof hat extends geschrieben aber irgendwie steht in internet implememnts, da dies ein iinterface ist.
 
K

kneitzel

Gast
Womit wir wieder beim Thema Grundlagen sind. Jetzt würde es mich nicht mehr wundern, wenn jemand das ganze Buch "Java ist auch eine Insel" hier einmal als Antwort postet.

Generics - Einschränken der Typen über Bounds: http://openbook.rheinwerk-verlag.de/javainsel/10_003.html#u10.3

Lesen - dann verstehst Du hoffentlich, warum der Professor extends im Code geschrieben hat (Denn das ist halt so vorgegeben)

Dann hast Du eine Instanz von der Klasse erzeugen können mit einem bestimmten Typ. Wenn das geklappt hat, dann hat der Typ wohl die Anforderungen an T der generischen Klasse erfüllt..... => Also muss da kein Comparable mehr implementiert werden, weil das schon der Fall ist.

Collections.sort
Du hast da was gefunden und willst es nutzen. Aber du hast darüber selbst nichts gelesen oder recherchiert. Wenn Du eine Klasse nutzen willst, dann lies darüber etwas! Wenn Du eine Klasse des Java Frameworks nutzen willst, dann such bei google nach "Oracle <Klassenname|Interfacename> class|interface" also in diesem konkreten Fall "Oracle Collections class" und dann solltest Du Treffer bekommen, die heissen: <Klassenname> (Java Platform SE<Version>) - Oracle Docs, also jetzt in diesem Fall Collections (Java Platform SE7) - Oracle Docs. Das klickt man dann an und dann sieht man ja, was da so definiert ist.

Und dann siehst Du genau, was die sort Funktion für Parameter hat und was da erfüllt sein muss. So erwartet die Funktion ein List<T> mit T extends Comparable. List ist dabei ein Link, auf den Du als nächstes klicken solltest und dann siehst Du, was das genau ist.
Und siehe da: Das ist ein Interface. Implementiert Deine Klasse dieses Interface? Wenn nein, dann kannst Du eine Instanz von deiner Klasse da nicht übergeben. (Womit wir wieder beim Thema Java Grundlagen sind.)

Dir wird seid mindestens 11. April gesagt, dass Du die Java Grundlagen lernen solltest. Hast Du damit wenigstens schon einmal angefangen? Was machst Du um die Grundlagen zu lernen und wie weit bist du bereits? Java ist auch eine Insel wurde mehrfach vorgeschlagen... Das wäre eine Option. Generell war bei uns die Erwartungshaltung der Profs, dass wir eine neue Sprache in 2 Tagen Vollzeit lernen können. Teilzeit waren sie damals großzügig: 2 Wochen. Aber nach den zwei Wochen ging es dann auch gleich richtig zur Sache und da gab es dann keine Ausreden ...
Und hier würde ich auch bald dazu über gehen, dass ich nur noch Verweise auf das Kapitel in Java is auch eine Insel poste, sobald offensichtlich ist, dass da eine Grundlage schlicht fehlt.
 
H

Heyoka955

Gast
Womit wir wieder beim Thema Grundlagen sind. Jetzt würde es mich nicht mehr wundern, wenn jemand das ganze Buch "Java ist auch eine Insel" hier einmal als Antwort postet.

Generics - Einschränken der Typen über Bounds: http://openbook.rheinwerk-verlag.de/javainsel/10_003.html#u10.3

Lesen - dann verstehst Du hoffentlich, warum der Professor extends im Code geschrieben hat (Denn das ist halt so vorgegeben)

Dann hast Du eine Instanz von der Klasse erzeugen können mit einem bestimmten Typ. Wenn das geklappt hat, dann hat der Typ wohl die Anforderungen an T der generischen Klasse erfüllt..... => Also muss da kein Comparable mehr implementiert werden, weil das schon der Fall ist.

Collections.sort
Du hast da was gefunden und willst es nutzen. Aber du hast darüber selbst nichts gelesen oder recherchiert. Wenn Du eine Klasse nutzen willst, dann lies darüber etwas! Wenn Du eine Klasse des Java Frameworks nutzen willst, dann such bei google nach "Oracle <Klassenname|Interfacename> class|interface" also in diesem konkreten Fall "Oracle Collections class" und dann solltest Du Treffer bekommen, die heissen: <Klassenname> (Java Platform SE<Version>) - Oracle Docs, also jetzt in diesem Fall Collections (Java Platform SE7) - Oracle Docs. Das klickt man dann an und dann sieht man ja, was da so definiert ist.

Und dann siehst Du genau, was die sort Funktion für Parameter hat und was da erfüllt sein muss. So erwartet die Funktion ein List<T> mit T extends Comparable. List ist dabei ein Link, auf den Du als nächstes klicken solltest und dann siehst Du, was das genau ist.
Und siehe da: Das ist ein Interface. Implementiert Deine Klasse dieses Interface? Wenn nein, dann kannst Du eine Instanz von deiner Klasse da nicht übergeben. (Womit wir wieder beim Thema Java Grundlagen sind.)

Dir wird seid mindestens 11. April gesagt, dass Du die Java Grundlagen lernen solltest. Hast Du damit wenigstens schon einmal angefangen? Was machst Du um die Grundlagen zu lernen und wie weit bist du bereits? Java ist auch eine Insel wurde mehrfach vorgeschlagen... Das wäre eine Option. Generell war bei uns die Erwartungshaltung der Profs, dass wir eine neue Sprache in 2 Tagen Vollzeit lernen können. Teilzeit waren sie damals großzügig: 2 Wochen. Aber nach den zwei Wochen ging es dann auch gleich richtig zur Sache und da gab es dann keine Ausreden ...
Und hier würde ich auch bald dazu über gehen, dass ich nur noch Verweise auf das Kapitel in Java is auch eine Insel poste, sobald offensichtlich ist, dass da eine Grundlage schlicht fehlt.
mache ich aber ich änder gerade meine ganze klasse !
 
K

kneitzel

Gast
Also ich weiss nicht, was du da machst. Ich würde nicht die ganze Klasse ändern. Ich mein, dass ich auch schon einmal geschrieben habe, wo und wie das lösbar wäre. Die Idee war, schon beim Einfügen auf die Sortierung zu achten ....

Aber klar: manchmal muss man eine Klasse umschreiben oder neu schreiben ... Muss also nicht falsch sein. Aber statt blind umher zu irren, könnte es besser sein, erst Mal mehr Zeit für Grundlagen zu opfern.
 
H

Heyoka955

Gast
Also ich weiss nicht, was du da machst. Ich würde nicht die ganze Klasse ändern. Ich mein, dass ich auch schon einmal geschrieben habe, wo und wie das lösbar wäre. Die Idee war, schon beim Einfügen auf die Sortierung zu achten ....

Aber klar: manchmal muss man eine Klasse umschreiben oder neu schreiben ... Muss also nicht falsch sein. Aber statt blind umher zu irren, könnte es besser sein, erst Mal mehr Zeit für Grundlagen zu opfern.
Java:
public class ListNode<T extends Comparable<T>> {
    ListNode head;
    T value;
    ListNode next;
    
    
    public ListNode(T value){
        
        this.value=value;
        
        
    }
    
    
    
    public void insert( T newvalue){
        
    
        
        head = new ListNode(newvalue);
        
        
    }
    
    public void printList(String a){
        System.out.print(a + value);
        a += " ";
        if(head != null){
            head.printList(a);
            
            
            
        }
        
        
    }
        
        
    public void sorting(){
        ListNode current = head;
        ListNode currentvor = current.next;
        
        for(int i= 1; i < 4; i++){
            for(int j = 0; i < 4; i++){
                if(current.value.compareTo(currentvor.value) < 0){
                    
                    
                    
                    
                }
                
                
                
            }
            
            
            
            
        }
        
        
        
        
    }   
        
    
    
    
    bitteschön. jetzt muss ich nun wissen wie ich die beiden weirte vergleiche
 
K

kneitzel

Gast
Also wenn ich mir etwas erarbeiten will, dann nutze ich nie ein komplexes Projekt. Ich nutze da immer ein kleinen, abgeschlossenen Bereich, den ich dafür dann verwende.

Du willst Dir Compareable erabeiten. Also könnte man erst einmal das Interface ansehen. Die Doku bietet da sehr viele Informationen, u.a. welche Klassen das Interface alle implementieren. Da kann man sich dann etwas raussuchen. Was genau, ist eigentlich egal. Sollte nichts zu komplexes sein. Ich habe einfach einmal Long genommen.

Damit kann man dann etwas experimentieren:
Java:
package comparable;

public class ComparableExample {
    public static void main (String[] args) {
        Long firstNumber = 10l;
        Long secondNumber = 1l;

        System.out.println(firstNumber.compareTo(secondNumber));
    }
}

Da kann man die Werte verändern und schauen, was da wann wie raus kommt. (So die Dokumentation von Comparable nicht reicht. Die kann aber auch schon reichen:

int compareTo(T o)
Compares this object with the specified object for order. Returns a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.
The implementor must ensure sgn(x.compareTo(y)) == -sgn(y.compareTo(x)) for all x and y. (This implies that x.compareTo(y) must throw an exception iff y.compareTo(x)throws an exception.)
The implementor must also ensure that the relation is transitive: (x.compareTo(y)>0 && y.compareTo(z)>0) implies x.compareTo(z)>0.
Finally, the implementor must ensure that x.compareTo(y)==0 implies that sgn(x.compareTo(z)) == sgn(y.compareTo(z)), for all z.
It is strongly recommended, but not strictly required that (x.compareTo(y)==0) == (x.equals(y)). Generally speaking, any class that implements the Comparable interface and violates this condition should clearly indicate this fact. The recommended language is "Note: this class has a natural ordering that is inconsistent with equals."
In the foregoing description, the notation sgn(expression) designates the mathematical signum function, which is defined to return one of -1, 0, or 1 according to whether the value of expression is negative, zero or positive.
Parameters:eek: - the object to be compared.Returns:a negative integer, zero, or a positive integer as this object is less than, equal to, or greater than the specified object.Throws:NullPointerException - if the specified object is nullClassCastException - if the specified object's type prevents it from being compared to this object.
 
H

Heyoka955

Gast
o
Also wenn ich mir etwas erarbeiten will, dann nutze ich nie ein komplexes Projekt. Ich nutze da immer ein kleinen, abgeschlossenen Bereich, den ich dafür dann verwende.

Du willst Dir Compareable erabeiten. Also könnte man erst einmal das Interface ansehen. Die Doku bietet da sehr viele Informationen, u.a. welche Klassen das Interface alle implementieren. Da kann man sich dann etwas raussuchen. Was genau, ist eigentlich egal. Sollte nichts zu komplexes sein. Ich habe einfach einmal Long genommen.

Damit kann man dann etwas experimentieren:
Java:
package comparable;

public class ComparableExample {
    public static void main (String[] args) {
        Long firstNumber = 10l;
        Long secondNumber = 1l;

        System.out.println(firstNumber.compareTo(secondNumber));
    }
}

Da kann man die Werte verändern und schauen, was da wann wie raus kommt. (So die Dokumentation von Comparable nicht reicht. Die kann aber auch schon reichen:
okay das verstehe ich, die Methode sorgt dazu ob das objekt das die Methode aufruft größer oder kleiner ist aber wie hilft mir das weiter bezüglich von bubblesort?

achso okay glaube ich habe es,

ich könnte die werte vergleichen dass wenn das objekt das den parameter aufruft gleich 1 ist, dann heißt es ja dass dann dieses objekt größer ist als das objekt das in paramter übergeben wird und dadurch kann ich das dann bestimmen welcher größer ist, vllt weiß ich nicht die werte genau aber ich weiß welches größer ist.

Schonmal riesen anfang
 
Zuletzt bearbeitet von einem Moderator:
H

Heyoka955

Gast
11725

Java:
public class ListNode<T extends Comparable<T>> {
    ListNode head = null;
    T value;
    ListNode next;
    
    
    public ListNode(T value){
        
        this.value=value;
        
        
    }
    
    
    
    public void insert( T newvalue){
        if(head == null){
             head = new ListNode(newvalue);
             head.next = null;
             return;
         }
        
        
        
        ListNode current = head; //gehe anfang durch
        
        while(current != null){
            
            if(newvalue.compareTo(current.value) == 1 && newvalue.compareTo(current.next.value) < 0){ 
                
                current.next = new ListNode(newvalue); //der derzeitige zeiger zeigt auf den einfügenden knoten
                
                current.next = current.next.next; //der zeiger der eingefügt wurde zeigt auf das Objekt, das größer ist als er.
                return;
            }
            current = current.next; //gehe einen schritt weiter
            
            
        }
        
        
        
    }
    
    public void printList(String a){
        System.out.print(a + value);
        a += " ";
        if(head != null){
            head.printList(a);
            
            
            
        }
        
        
    }
        
        

    
    
    public int size() {
        
        ListNode<T> current = head;
        int count = 0;
        
        while(current != null){
            
            count++;
            current = current.next;
            
            
        }
        
        return count;
        
        
        
        

    }   
        
    
    
    
}
 
K

kneitzel

Gast
Thema Generics: Wie definiert man eine Instanz von einer Generics Klasse?
Und wie definierst Du Instanzen von ListNode innerhalb Deiner ListNode Klasse?
 

mihe7

Top Contributor
Überall, wo Du ListNode verwendest.

Nachtrag: vergleiche z. B. mal current in Methode size() mit current in Methode insert().
 
H

Heyoka955

Gast
Das glaub ich kaum.
ne der bug ist weg aber das program bleibt stehen, es printet nur die 5 raus


habe mal mein insert code auskommentiert und mal das normale einfügen gemacht und das hat geklappt.

also meine insert methode hat leider einen bug
Code:
public void insert( T newvalue){

        
        
        
        if(head == null){
             head = new ListNode<T>(newvalue);
             head.next = null;
             return;
         }
        
        
        ListNode<T> newnode = new ListNode<T>(newvalue);
        
        
        ListNode<T> current = head;
        
        while(current != null){
            
            if(newvalue.compareTo(current.value) == 1 && newvalue.compareTo(current.next.value) < 0){ 
                
                newnode.next = current.next;
                current.next = newnode;
            }
            current = current.next;
            
            
        }
        
        
        
        
        
        
        
        
    }
 
Zuletzt bearbeitet von einem Moderator:

mihe7

Top Contributor
K

kneitzel

Gast
Also schau doch nur, was du da machst... current.next wird das einzufügende Element und dann im nächsten Befehl setzt du current.next wieder und überschreibst damit den Verweis auf das neue Element.

Und der Zugriff auf current.next.value scheint auch dubios zu sein. next kann ja null sein und dann sollte da eine NPE kommen.....
 

Tarrew

Top Contributor
Ich will mal die 100 vollmachen und sagen, dass dieser Thread mal wieder ein Beweis für die unendliche Geduld von einigen Mitgliedern hier ist.

Ist ja echt unglaublich, wie man da teilweise noch ruhig bleiben kann, bei mir schwankt es zwischenzeitlich echt zwischen Wut, Verzweifelung, Belustigung und tiefer Trauer :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
A LinkedList implementieren Java Basics - Anfänger-Themen 32
M Wie kann ich den Index i von einer LinkedList überprüfen? Java Basics - Anfänger-Themen 36
Düsseldorf2002 Datentypen Verschachtelte LinkedList Java Basics - Anfänger-Themen 5
Düsseldorf2002 Datentypen Zwei dimensionale LinkedList Java Basics - Anfänger-Themen 8
B Warteschlange erstellen mit LinkedList ? Java Basics - Anfänger-Themen 6
U Objekte in LinkedList löschen und editieren Java Basics - Anfänger-Themen 14
G Java LinkedList remove Methode Java Basics - Anfänger-Themen 5
G Java LinkedList Java Basics - Anfänger-Themen 6
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
S Eigene LinkedList Klasse Java Basics - Anfänger-Themen 4
S Mit einer LinkedList vorwärts und rückwärts iterieren Java Basics - Anfänger-Themen 6
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
G Java LinkedList Java Basics - Anfänger-Themen 3
B LinkedList add-Methode Java Basics - Anfänger-Themen 10
F Windows in LinkedList registrieren Java Basics - Anfänger-Themen 3
A Hilfe, LinkedList Java Basics - Anfänger-Themen 2
H Knoten-Reihenfolge einer LinkedList invertieren Java Basics - Anfänger-Themen 11
O Hashmap, ArrayList, LinkedList Java Basics - Anfänger-Themen 7
P Quellcode LinkedList Java Basics - Anfänger-Themen 2
F Collection Aufgabe mit LinkedList Java Basics - Anfänger-Themen 3
N Hilfe bei verknüpfter Liste - Linkedlist Java Basics - Anfänger-Themen 11
P Datentypen LinkedList: Kopie behält Referenz? Java Basics - Anfänger-Themen 3
C ArrayList vs LinkedList vs ? Java Basics - Anfänger-Themen 15
C LinkedList vs. ArrayList Java Basics - Anfänger-Themen 15
O LinkedList zu ArrayList Java Basics - Anfänger-Themen 4
M LinkedList elemente löschen Java Basics - Anfänger-Themen 2
L Problem mit LinkedList Java Basics - Anfänger-Themen 3
F In LinkedList einen Wert ersetzen oder neu einfügen Java Basics - Anfänger-Themen 7
P Hashmap anstatt LinkedList? Java Basics - Anfänger-Themen 6
TechGirl LinkedList - kurze allgemeine Frage Java Basics - Anfänger-Themen 17
L LinkedList Comparable < > MEHRFACH implementieren? Java Basics - Anfänger-Themen 3
S LinkedList mit Input vergleichen. Java Basics - Anfänger-Themen 5
C Bei der LinkedList auf Palindrom überprüfen Java Basics - Anfänger-Themen 4
F Element aus LinkedList löschen Java Basics - Anfänger-Themen 3
A LinkedList: Probleme beim Auslesen Java Basics - Anfänger-Themen 2
T Collections LinkedList<LinkedList<T>> - Implementierung Java Basics - Anfänger-Themen 10
S Jfreechart mit LinkedList befüllen Java Basics - Anfänger-Themen 1
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
K LinkedList aus Arrays ( Lösungsraum Mastermind ) Java Basics - Anfänger-Themen 5
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
K Methoden Probleme mit LinkedList.remove(object) Java Basics - Anfänger-Themen 1
Farbenfroh int in LinkedList einsortieren Java Basics - Anfänger-Themen 4
W Klassen LinkedList funktioniert nicht Java Basics - Anfänger-Themen 6
X LinkedList - Index eines Objekts Java Basics - Anfänger-Themen 2
S Strings in eine LinkedList schreiben und auslesen? Java Basics - Anfänger-Themen 4
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
T Datentypen gleichmäßiges mischen von 2 LinkedList Java Basics - Anfänger-Themen 3
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
J Datentypen Array von einer LinkedList Java Basics - Anfänger-Themen 5
R LinkedList Java Basics - Anfänger-Themen 8
J Per I/O Streams in LinkedList oder ArrayList schreiben/lesen Java Basics - Anfänger-Themen 6
B LinkedList remove Java Basics - Anfänger-Themen 5
J statische Methoden auf eine LinkedList initialisieren? Java Basics - Anfänger-Themen 5
G Hausaufgabe mit LinkedList und LinkedListStack verstehen Java Basics - Anfänger-Themen 6
N LinkedList-checkForComodification Java Basics - Anfänger-Themen 11
N LinkedList Java Basics - Anfänger-Themen 17
P LinkedList sortieren Java Basics - Anfänger-Themen 20
P LinkedList - Stack ... grundlegende Frage Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
B SUCHE: Threadsafe LinkedList Java Basics - Anfänger-Themen 10
Binary.Coder Wie linkedlist für Djikstra nutzen? Java Basics - Anfänger-Themen 6
M Arrays in LinkedList Java Basics - Anfänger-Themen 4
R Collections Probleme mit contains()-Methode [LinkedList] Java Basics - Anfänger-Themen 5
G Collections.binarySearch(LinkedList): cannot find method Java Basics - Anfänger-Themen 6
M LinkedList aktuelle position Java Basics - Anfänger-Themen 3
G Frage zu LinkedList Java Basics - Anfänger-Themen 15
H Dynamische Bindung mit Interfaces und LinkedList Java Basics - Anfänger-Themen 7
I LinkedLIst / ArrayList Konstruktor Java Basics - Anfänger-Themen 4
B Collections RandomAccessfile & Linkedlist Java Basics - Anfänger-Themen 4
S Speichermangel ArrayList/LinkedList Java Basics - Anfänger-Themen 3
V LinkedList size() Java Basics - Anfänger-Themen 2
darekkay Datentypen HashSet bzw. LinkedList mit Werten initialisieren Java Basics - Anfänger-Themen 3
D Probleme mit LinkedList Java Basics - Anfänger-Themen 6
L LinkedList vorgänger Knoten zurück geben Java Basics - Anfänger-Themen 4
S LinkedList indexOf() - geht des irgendwie schneller? Java Basics - Anfänger-Themen 23
S LinkedList<String[]> filtern und sortieren Java Basics - Anfänger-Themen 9
W LinkedList Java Basics - Anfänger-Themen 12
S Frage zum speichern der Daten in einer LinkedList Java Basics - Anfänger-Themen 2
D Fenster in LinkedList verwalten Java Basics - Anfänger-Themen 2
C HashMap mit LinkedList Java Basics - Anfänger-Themen 5
S Datentypen LinkedList Konstruktor, add Alternative Java Basics - Anfänger-Themen 2
truesoul LinkedList Problem Java Basics - Anfänger-Themen 6
M Java Generics LinkedList Java Basics - Anfänger-Themen 5
H LinkedList Element an Stelle x ausgeben? Java Basics - Anfänger-Themen 5
D LinkedList aufrufe Java Basics - Anfänger-Themen 3
S Problem mit ObjectInputStream beim Einlesen von LinkedList Java Basics - Anfänger-Themen 3
S Serialized LinkedList aus Datei Laden Java Basics - Anfänger-Themen 15
S LinkedList Java Basics - Anfänger-Themen 2
M LinkedList in anderer Klasse nutzen Java Basics - Anfänger-Themen 4
L LinkedList sortieren Java Basics - Anfänger-Themen 5
L heap space, LinkedList umspeichern Java Basics - Anfänger-Themen 15
H LinkedList mit Strings Exception Java Basics - Anfänger-Themen 3
S IndexOutofBoundsException bei linkedlist Java Basics - Anfänger-Themen 5
B Fehlersuche bei LinkedList Java Basics - Anfänger-Themen 3
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
S Sortierte LinkedList nach Variablen durchsuchen und nicht nach INDEX Java Basics - Anfänger-Themen 6
B Unterschied ArrayList und LinkedList Java Basics - Anfänger-Themen 5
S Implementierung gegen Interfaces / List, ArrayList, LinkedList Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben