LinkedList sortieren

Permafrost

Mitglied
ich hoffe das reicht an code um es zu erklären.
ich möchte eine ausgabe bekommen die in etwa so aussieht:
Code:
          Katze:
          Nick
          Nick
          Hund:
          Nick ....
würde mich freuen wenn ihr mir helfen könnt.
Java:
package animals;

import java.util.Collections;

import java.util.Scanner;
import java.util.LinkedList;

public class Main {

    //public static Animal oSelected;
    static LinkedList<Animal> zoo = new LinkedList<Animal>();

    /**
     *
     * @param args
     */
    public static void main(String[] args) {

        boolean bExit = false;

        Animal oSelect;
        while (!bExit) {

            oSelect = select();
            if (oSelect == null) {

                bExit = true;
                continue;
            }


        }

    }

    private static Animal select() {
        try {
            Animal oSelect = null;
            boolean bExit = false;

            do {
                System.out.println("\nBitte wählen Sie :");
                System.out.println("Tier ansehen  \t<a>");
                System.out.println("Tier erstellen\t<e>");
                System.out.println("Beenden       \t<b>");

                Scanner oScanner = new Scanner(System.in);
                char chInput = oScanner.next().charAt(0);   // gibt char zurück

                switch (chInput) {
                    case 'a':

                        Main.selectAnimal(false);
                        break;
                    case 'e':
                        Main.createAnimal();

                        break;
                    case 'b':
                        bExit = true;
                        oSelect = null;

                        break;
                    default:

                        System.err.println("Sie haben einen falschen Buchstaben eingegeben.");
                }

            } while (!bExit);

            return oSelect;

        } catch (Exception oExc) // erstelle Exception Objekt
        {
            oExc.printStackTrace(); // gebe Ausnahme aus (Objekt)
            return null;
        }
    }

    private static Animal createAnimal() {
        boolean bStatus;

        try {
            Animal oSelected = null;
            boolean bExit2 = false;


            do {
                // Ausgabe
                System.out.println("\nBitte suchen Sie sich ein Tier aus :");
                System.out.println("Katze         \t<k>");
                System.out.println("Hund          \t<h>");
                System.out.println("Maus          \t<m>");
                System.out.println("Zurück        \t<z>");


                // Eingabe
                Scanner oScanner = new Scanner(System.in);
                char chInput = oScanner.next().charAt(0);   // gibt char zurück

                switch (chInput) {
                    case 'k':
                        oSelected = new Cat();
                        zoo.add(oSelected);
                        break;
                    case 'h':
                        oSelected = new Dog();
                        zoo.add(oSelected);
                        break;
                    case 'm':
                        oSelected = new Mouse();
                        zoo.add(oSelected);
                        break;
                    case 'z':
                        bExit2 = true;
                        break;
                    default:
                        System.err.println("Sie haben einen falschen Buchstaben eingegeben.");
                }
            } while (oSelected == null && !bExit2);
            //Ausgabe Nickname
            System.out.println("\nBitte geben Sie den Spitznamen des Tieres ein.");
            Scanner oScanner = new Scanner(System.in);
            oSelected.setNickname(oScanner.next());
            System.out.println("\nBitte geben Sie das Datum in tt.mm.jjjj");
            
            bStatus = true;
            while (bStatus) {
            
            //Ausgabe Datum
            
            Birthday oDate = new Birthday();
            
            
            if (!oDate.checkSyntax(oScanner.next())) {
            System.err.println("falsche Datumssyntax");
            continue;
            }
            oSelected.setBd(oDate);
            bStatus = false;
            }                                                                         


            return oSelected;
        } catch (Exception oExc) // erstelle Exception Objekt
        {
            oExc.printStackTrace(); // gebe Ausnahme aus (Objekt)
            return null;
        }
    }

    public static boolean selectAnimal(boolean bSelectAnimal) {
        String nickname;
        try {

            bSelectAnimal = false;

            do {
                System.out.println("\nBitte wählen Sie ein Menüpunkt aus.");
                System.out.println("Name          \t<n>");
                System.out.println("Alle Tiere    \t<a>");
                System.out.println("Zurück        \t<z>");

                Scanner oScanner = new Scanner(System.in);
                char chInput = oScanner.next().charAt(0);

                switch (chInput) {
                    case 'a':

                       [COLOR="Red"] //Hier ist mein Problem[/COLOR]

                        break;
                    case 'n': {
                        System.out.println("\nBitte geben sie den Namen des Tieres ein:");
                        nickname = oScanner.next();
                        Animal oMyAnimal = null;
                        int i = 0;
                        boolean bFound = false;
                        while (i < zoo.size() && !bFound) {
                            oMyAnimal = zoo.get(i);
                            bFound = oMyAnimal.getNickname().equals(nickname);
                            i++;
                        }
                        if (bFound) {
                            // Jetzt Menü für oMyAnimal aufrufen
                            oMyAnimal.setIndex(false);
                        } else {
                            // Fehlerbehandlung: Tier nicht vorhanden
                            System.out.println("Dieses Tier gibt es nicht!");
                            break;
                        }
                    }
                    case 'z': {
                        return true;
                    }
                    default: {

                        System.err.println("Sie haben ein falsches Zeichen eingegeben");
                        break;
                    }
                }
            } while (!bSelectAnimal);

        } catch (Exception oExc) // erstelle Exception Objekt
        {
            oExc.printStackTrace(); // gebe Ausnahme aus (Objekt)
            bSelectAnimal = false;
        }

        return bSelectAnimal = true;

    }
}
 
Zuletzt bearbeitet von einem Moderator:

akimoon

Aktives Mitglied
Hm.. ich würd sagen, da würde sich eine andere Struktur als eine LinkedList anbieten. LinkedList ordnet es ja keinem Oberbegriff zu, sondern reiht die Begriffe aneinander und merkt sich die "Nachbarn" :)

Ansonsten könntest du natürlich die LinkedList sortieren, oder alternativ die gesamte LinkedList durchsuchen und die Zwischenergebnisse in einzelne Listen speichern... usw.. also Möglichkeiten gibt es genug.

Müsstest eventuell ein bisschen mehr über die Aufgabe bzw. Vorgaben verraten und wo dein Problem ist, damit man dir besser helfen kann? :D (wo soll die Ausgabe erscheinen und wann?)
 

Permafrost

Mitglied
ich wusste nicht wie ich es formulieren sollte also
bei SelectAnimal bei case a
Alle Tiere soll es rein
nun möchte ich aber bei LinkedList bleiben ^^
ich hatte es schon mal versucht mein ergebnis sah so aus:

Java:
                        for (Animal animal : zoo)
                        {
                            
                            
   
                            if (animal.sName.equals("Katze")){
                                
                                boolean bExit= true;
                                do {
                                    System.out.println("Katzen :");
                                    bExit = false;
                                }while (bExit);
                                System.out.println(animal.msNickname);
                            }
                            //System.out.println(animal.sName + " " + animal.msNickname);

                        }

Nur da bekomme ich dann immer nur das raus

Code:
         katze:
         nick
         katze:
         nick
 
G

Grotesk

Gast
Vielleicht einfach [c]Collections.sort(Zoo)[/c] und [c]System.out.println(Zoo)[/c]

Fürs sortieren könnte man eine eigene [c]Comparator[/c] -Klasse implementieren.
 

Marco13

Top Contributor
Über Struktur und Sinn könnte man lange diskutieren. LinkedList (statt List) ist nicht schön, die Aufgaben bzw. die Verwaltung des "Datenmodells" sind unschön mit diesem Pseudo-Konsolen-Menü verwurstet...
In der Tat ist das, was dort passieren soll, eine Art "sortierte" Ausgabe ( :lol: ) aber... du könntest mal über eine Methode nachdenken, wie z.B.
Java:
private static List<Animal> getByType(List<Animal> animals, String type) { ... }
damit du sowas machen könntest wie
Java:
List<Animal> cats = getByType(zoo, typeThatWasEnteredByUser);
for (Animal a : cats)
{
    System.out.println(a);
}
(und die Methode "getByName" könnte es früher oder später wohl auch geben)
 

Permafrost

Mitglied
danke dir^^hab schon ein bisschen was geschaft
Java:
                        Animal oAnimal = null;
                        Collections.sort(zoo,new Sort());
                        System.out.println(oAnimal.getSort());
Java:
 class Sort<o1 extends Animal> implements Comparator{



    public int compare(o1 arg0) {
        Animal mob1 = arg0;

        return mob1.getSort();
    }

    public int compare(Object o1, Object o2) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
 

faetzminator

Gesperrter Benutzer
Dein Comparator bringt also eigentlich überhaupt nichts. Weisst du auch, was du tust? Du sollst die Methode [c]compare(T, T)[/c] überschreiben ;)
Also so was:
Java:
public class Sort implements Comparator<T extends Animal> {
 
    public int compare(T o1, T o2) {
        return o1.getSort().compareTo(o2.getSort());
    }
}[/Java]
 

Permafrost

Mitglied
nein ich habe leider keine ahnung da ich das zum ersten mal mache und noch nicht so lange java lerne und ein bisschen schwer von kape bin momentan grins^^ ist ja nicht einfach
kannst du mir den code ein bisschen erklären damit ich ihn verstehe? bzw wie ich an so einen rangehen soll?
ich verstehe zum beispiel nicht warum ich einen fehler bekomme bei der ersten zeile die du geschrieben hast
der fehler:
> expected
irgentwas muss bei T nicht in ordnung sein
ich arbeite mit NetBeans IDE 6.9.1
 

Marco13

Top Contributor
mit
Java:
class Sort implements Comparator<Animal> {
    
    public int compare(Animal o1, Animal o2) {
        return o1.getSort().compareTo(o2.getSort());
    }
}
sollte es gehen...
 

akimoon

Aktives Mitglied
Du könntest allerdings auch mit der Klasse Animal das Comparable-Interface implementieren (oder bin ich noch zu müde und überseh etwas nicht?).

Quick und dirty:
Java:
public class Animal implements Comparable{

    public Animal(String name){
        this.name = name;
    }
    
    String name;

    @Override
    public int compareTo(Object o) {
        if(o instanceof Animal){
            if(o.getClass() == this.getClass())
                return this.name.compareTo(((Animal)o).name);
             else
                return this.getClass().toString().compareTo(o.getClass().toString());
        } else 
            throw new ClassFormatError("Kein Animal");
    }
}

und anschließend müsste sich die LinkedList doch mit
Java:
Collections.sort(zoo);
sortieren lassen?
 

Permafrost

Mitglied
so hab ich geschrieben nur mit compareTo kann doch was nicht stimmen oder ?
Java:
public class Sort implements Comparator<Animal> {

    public int compare(Animal o1, Animal o2) {
        return o1.getSort().compareTo(o2.getSort());
    }
}
in Animal
Java:
Object getSort() {
        return msSort;
    }
 

faetzminator

Gesperrter Benutzer
[...] kannst du mir den code ein bisschen erklären damit ich ihn verstehe? bzw wie ich an so einen rangehen soll?
Was verstehst du nicht?
ich verstehe zum beispiel nicht warum ich einen fehler bekomme bei der ersten zeile die du geschrieben hast

Tschuldigung, Flüchtigkeitsfehler... Sollte natürlich
Java:
public class Sort<T> implements Comparator<T extends Animal>
sein, oder eben als Alternative
Java:
public class Sort implements Comparator<Animal>
.
 

Permafrost

Mitglied
geht das eigentlich auch ohne interface? weil ich das selber noch nicht hatte evtl geht es dann leichter für mich es zu verstehen
bin ich eigentlich mit meinen gedanken weg richtig :
ich habe Linkedlist zoo die spalte ich in die drei tierarten
katze hund und maus
diese tierarten werden je einzelne linkedlisten
in diese sind die nicks der tiere eingespeichert
und so kann ich sie dann ausgeben komplett und nach abfrage einzeln

ist mein gedankenweg möglich?
ich möchte es ja verstehen deswegen keinen fertigen code bitte sonst lerne ich ja nix
 

timbeau

Gesperrter Benutzer
Soweit ich deine Text entziffern kann (Groß-Klein-Schreibung & Satzzeichen sind schon toll manchmal) sollte das gehen. Du kannst Klassen mischen, wenn sie eine gemeinsame Oberklasse implementieren. Dann kannst du aber auch nur auf Methoden der Oberklasse zugreifen.

Wenn du 3 Listen hast und die jeweils die einzelnen Tierarten enthalten kannst du die spezielleren Methoden aufrufen.
 

Permafrost

Mitglied
so hab es geschaft mir hat ein kolege geholfen *glücklich*

selectAnimal()
Java:
             case 'a':
                        printAnimalNames(zoo);
                        break;

Java:
private static List<String> getAnimalTypes (List<Animal> oZoo){
        List<String> oTypes = new LinkedList<String> ();
        for (Animal oAnimal: oZoo) {
            boolean bEnde = false;
            for (String Types: oTypes){

                if (oAnimal.sName.equalsIgnoreCase(Types))
                {
                    bEnde = true;
                    break;
                }
            }
            if (!bEnde){
               oTypes.add(oAnimal.sName);
            }

        }
        return oTypes;
    }

Java:
private static List<String> getAnimalNames (List<Animal> oZoo, String sName)
    {
        List<String> oNicknames = new LinkedList<String>();
        for (Animal oAnimal:oZoo)
        {
            if (oAnimal.sName.equalsIgnoreCase(sName))
            {

                oNicknames.add(oAnimal.msNickname);
            }
        }
        return oNicknames;
    }

Java:
private static boolean printAnimalNames (List<Animal> oZoo)
    {
        List<String> oTypes = new LinkedList<String>();
        oTypes.addAll(getAnimalTypes(oZoo));
        for (String sTypes: oTypes)
        {
            System.out.println(" ");
            System.out.println(sTypes);
            List<String> oNicknames =new LinkedList<String>();
            oNicknames.addAll(getAnimalNames(oZoo,sTypes));
            for (String sNicknames: oNicknames)
                System.out.println(sNicknames);
        }

    return true;
    }

Danke aber auch für eure hilfe

jetzt hatte ich ganz vergessen zu fragen wie findet ihr den den?

ps.: Was ist Rechtschreibung? Nie davon gehört^^
 
Zuletzt bearbeitet:

Permafrost

Mitglied
Muss noch mal nerven und die tier geschichte hört nicht auf^^
Wie kann man den das Menü löschen?
Nach der Eingabe sollte dies automatisch funktionieren.
Habe bis jetzt nichts brauchbares gefunden.
Währe lieb wenn ihr mir helfen könntet.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
D Sortieren von int Werten von Objekten in einer LinkedList, kann nicht auf int Werte zugreifen Java Basics - Anfänger-Themen 3
S LinkedList<String[]> filtern und sortieren Java Basics - Anfänger-Themen 9
L LinkedList sortieren Java Basics - Anfänger-Themen 5
F LinkedList Sortieren Java Basics - Anfänger-Themen 4
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
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
H linkedlist generische klassen Java Basics - Anfänger-Themen 169
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
B generische LinkedList nach Häufigkeit der Elemente füllen Java Basics - Anfänger-Themen 6
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
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 - 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
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 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

Ähnliche Java Themen

Neue Themen


Oben