Linked list sortieren

Status
Nicht offen für weitere Antworten.

neophytica

Mitglied
hallo leute,

mein problem ist ein bischen komplexer als die überschrift vermuten lässt...
weiss nicht ob es wirklich ein anfängerproblem ist aber weiss nicht wo ich es sonst hinschreiben soll

so

ich habe ein package schul

darin befinden sich die klassen Person, Pupil und Teacher

und ein main programm schul...

sieht folgendermaßen aus:
schularh5.png


es wird ganz links vor bzw. der nachname des lehrers eingegeben, mit klick auf lehrer hinzufügen wird dieser in eine LinkedList gespeichert sowie in die awt.List übernommen.
bei schüler hinzufügen muss ein lehrer ausgewählt sein dem dieser schüler zugewiesen wird...

jetzt zu meinem Problem:
ich muss eine sortierung einbauen,
ich sollte beispielsweise nach nachname sortieren wie an den buttons zu erkennen ist...
dabei sollte die linked list sortiert werden, zu beachten das es vom Typ Teacher sein muss damit keine probleme mit dem lehrer zugewiesenen schülern auftreten...
danach sollte awt.list geleert und mit sortiertem inhalt wieder aufgefüllt werden



Code:
package schul;

public class Person
{
	//fields
	protected String nachname = null;
	protected String vorname = null;

	// c'tor
    public Person(String nachname, String vorname)
    {
		this.nachname = nachname;
		this.vorname = vorname;
    }

	// methods
	public String getNachname()
	{
		return nachname;
	}
	public void setNachname(String nachname)
	{
		this.nachname = nachname;
	}
	public String getVorname()
	{
		return vorname;
	}
	public void setVorname(String vorname)
	{
		this.vorname = vorname;
	}
	public String getName()
	{
		return nachname + " " + vorname;
	}

	// overrides
	public String toString()
	{
		return "Ich bin " + vorname + " " + nachname + ".";
	}
}

Code:
package schul;

public class Pupil extends Person
{
	// fields
	private short note = 0;
	// sub-class for exception
	public class InvalidNoteException extends Exception
	{
		// c'tor
		public InvalidNoteException()
		{
		}
		// override toString
		public String toString()
		{
			return "Diese Note ist nicht zugelassen!";
		}
	}

	// c'tor 1
	public Pupil(String nachname, String vorname)
	{
		super(nachname, vorname);
	}
	// c'tor 2
	public Pupil(String nachname, String vorname, short note) throws schul.Pupil.InvalidNoteException
	{
		super(nachname, vorname);
		if (note < 1 || note > 5)
			throw new InvalidNoteException();
		this.note = note;
	}

	// methods
	public short getNote()
	{
		return note;
	}
	public void setNote(short note) throws schul.Pupil.InvalidNoteException
	{
		if (note < 1 || note > 5)
			throw new InvalidNoteException();
		this.note = note;
	}
	public void resetNote()
	{
		note = 0;
	}

	// overrides
	public boolean equals(Object obj)
	{
		boolean bRes = false;
		if (obj.getClass().equals(Pupil.class))
		{
			Pupil pupil = (Pupil)obj;
			if (nachname.equals(pupil.nachname) && vorname.equals(pupil.vorname) && note == pupil.note)
				bRes = true;
		}
		return bRes;
	}
	public String toString()
	{
		String stRes = super.toString();
		if (note != 0)
		{
			stRes = stRes.replace('.', ' ');
			stRes += "und habe einen " + note + "er bekommen.";
		}
		return stRes;
	}
}

Code:
package schul;
import java.util.*;

public class Teacher extends Person
{
	//fields
	LinkedList teachedPupils = null;
	short wochenstunden;

	public class InvalidWochenstundenException extends Exception  {
		public InvalidWochenstundenException()
		{
		}
		public String toString() {
			return "Wochenstunden für Lehrer sind ungültig";
		}
	}

	// c'tor
	public Teacher(String nachname, String vorname)
	{
		super(nachname, vorname);
		teachedPupils = new LinkedList();
	}
	public void setWochenstunden(short ws) {
		this.wochenstunden=ws;
	}

	// methods
	// adding pupils
	public void addPupil(Pupil pupil)
	{
		teachedPupils.add(pupil);
	}

	// removing pupils
	public boolean removePupil(Pupil pupil)
	{
		return teachedPupils.remove(pupil);
	}
	public Pupil removePupil(int index) throws IndexOutOfBoundsException
	{
		return (Pupil)teachedPupils.remove(index);
	}

	// additional infos
	public Pupil getPupil(int index) throws IndexOutOfBoundsException
	{
		return (Pupil)teachedPupils.get(index);
	}
	public boolean containsPupil(Pupil pupil)
	{
		return teachedPupils.contains(pupil);
	}
	public int pupilCount()
	{
		return teachedPupils.size();
	}
	public String[] getNoten()
	{
		Pupil pupil;
		ArrayList Arr = new ArrayList(10);
		for (int i = 0; i < teachedPupils.size(); i++)
		{
			pupil = (Pupil)teachedPupils.get(i);
			if (pupil.getNote() != 0)
				Arr.add(pupil.getName() + " ... Note: " + pupil.getNote());
		}
		return (String[])Arr.toArray(new String[1]);
	}

	// for practising with strings, we use (deprecated) methods
	public String[] showNotenArr() // deprecated
	{
		// we use the same algorithm but do only use the toString-method to get the necessary data
		ArrayList Arr = new ArrayList(10);
		String[] pupilData;
		for (int i = 0; i < teachedPupils.size(); i++)
		{
			pupilData = teachedPupils.get(i).toString().split(" ");
			if (pupilData.length != 4) // then the pupil does have a Note
				Arr.add(pupilData[3] + " " + pupilData[2] + " ... Note: " + pupilData[7].charAt(0));
		}
		return (String[])Arr.toArray(new String[1]);
	}
	public String showNoten() // deprecated
	{
		// we want to get the same result as in the previous method but in one string
		StringBuffer Buffer = new StringBuffer(512);
		String[] pupilData;
		for (int i = 0; i < teachedPupils.size(); i++)
		{
			pupilData = teachedPupils.get(i).toString().split(" ");
			if (pupilData.length != 4) // then the pupil does have a Note
			{
				Buffer.append(pupilData[3]);
				Buffer.append(" ");
				Buffer.append(pupilData[2]);
				Buffer.append(" ... Note: ");
				Buffer.append(pupilData[7].charAt(0));
				Buffer.append("\n");
			}
		}
		return Buffer.toString();
	}

        // overrides
        public boolean equals(Object obj)
        {
          boolean bRes = false;
          if (obj.getClass().equals(Teacher.class))
          {
            Teacher teacher = (Teacher)obj;
            if (vorname.equals(teacher.vorname) && nachname.equals(teacher.nachname))
              bRes = true;
          }
          return bRes;
        }
        public String toString()
        {
          return vorname + " " + nachname;
        }
}
 
B

bygones

Gast
Comparable wird nicht viel helfen wenn nach unterschiedlichen Kriterien sortiert werden soll, daher reicht der Comparator
 

neophytica

Mitglied
das ich da mit dem comparator arbeiten muss ist mir schon klar nur bekomm ich das nicht so ganz hin

Code:
class MyComparator implements Comparator {
		public int compare(Teacher a,Teacher b) {
			String s1=a.getNachname();
			String s2=b.getNachname();
			int m1=Math.min(s1.length(),s2.length());
			for(int i=0;i<m1;i++) {
				char c1=s1.charAt(i);
				char c2=s2.charAt(i);
				int r=Character.toUpperCase(c1)-Character.toUpperCase(c2);
				if(r!=0)
				{
					return r;
				}
				boolean c1u=Character.isUpperCase(c1);
				boolean c2u=Character.isUpperCase(c2);
				if(c1u!=c2u)
					return (c1u)?-1:1;
			}			
			return s1.length()-s2.length();
		}
		
		}
	}

das hab ich aus dem netz (selbst ein wenig modifiziert) da ich noch nicht sehr viel erfahrung mit dem comparator habe...

das ist der aufruf wenn "sortieren nach nachname" gedrückt wird

Code:
MyComparator mc=new MyComparator();
			Iterator it=lehrers.iterator();
			java.util.Collections.sort( lehrers, mc );     //hier wird aber nicht sortiert, zumindest nicht korrekt
			lehrerListe.removeAll();
			while(it.hasNext())  {
				
				String s=((Teacher)it.next()).getName();
				lehrerListe.add(s);
			}
 

Wildcard

Top Contributor
Es ist eine Frage der Höflichkeit auf Crosspostings aufmerksam zu machen, damit nicht mehr Leute als notwendig ihre Zeit verschwenden.
 

madboy

Top Contributor
ein bisschen einfacher:
Code:
class MyComparator implements Comparator { 
      public int compare(Teacher a,Teacher b) { 
         return a.getNachname().compareTo(b.getNachname());
      } 
   }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Linked List sortieren Java Basics - Anfänger-Themen 9
T Linked List set-Methode Java Basics - Anfänger-Themen 2
G Linked list, Methode zum Vertauschen von Elementen Java Basics - Anfänger-Themen 14
T KlausurÜbung- Förderband-Linked List Java Basics - Anfänger-Themen 53
hooked Verkettete Liste / linked list Java Basics - Anfänger-Themen 2
S Methoden Linked List Methoden können nicht aufgerufen werden Java Basics - Anfänger-Themen 1
L Linked List - Array List Java Basics - Anfänger-Themen 2
SexyPenny90 Implementierung einer doubly linked list Java Basics - Anfänger-Themen 5
G Linked List Programm add Problem Java Basics - Anfänger-Themen 5
S Synchronisieren einer Linked List Java Basics - Anfänger-Themen 16
E Linked List generisch Java Basics - Anfänger-Themen 5
B Linked-List Java Basics - Anfänger-Themen 2
T einfügen bei einer Linked List Java Basics - Anfänger-Themen 8
J linked list add ? Java Basics - Anfänger-Themen 2
J linked list Java Basics - Anfänger-Themen 13
M Beispiel für Linked List Java Basics - Anfänger-Themen 9
G Linked List mit Interface erstellen Java Basics - Anfänger-Themen 10
K Java Linked List Java Basics - Anfänger-Themen 11
W löschen in einer single linked list Java Basics - Anfänger-Themen 3
M Linked List schreiben und lesen Java Basics - Anfänger-Themen 4
Gaudimagspam Linked Liste Java Basics - Anfänger-Themen 4
G (Linked)HashMap sortieren Java Basics - Anfänger-Themen 1
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
J Array.list vergleichen Java Basics - Anfänger-Themen 1
B Vektor vs List Java Basics - Anfänger-Themen 4
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
berserkerdq2 Ich gebe eine ArrayList als List zurück per MEthode, wie kann ich nun aber die ArrayList speichern? Java Basics - Anfänger-Themen 46
L Datentypen Array List Java Basics - Anfänger-Themen 9
J Java List, Bitte um Hilfe Java Basics - Anfänger-Themen 15
J Java List, bitte um Hilfe Java Basics - Anfänger-Themen 3
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
B Interface List - Objekt übergeben? Einzelnes Objekt geht, aber Liste nicht? Java Basics - Anfänger-Themen 4
O Collections.sort und List.sort mit Lambda Verwirrung Java Basics - Anfänger-Themen 5
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
I csv auslesen, mittels List Java Basics - Anfänger-Themen 18
C Collections List über Interface zugreifen Java Basics - Anfänger-Themen 32
I Methoden List.contains() beim 2. Element = true Java Basics - Anfänger-Themen 1
N HashMap in List good practice? Java Basics - Anfänger-Themen 2
B SWAP List; Liste neu anordnen Java Basics - Anfänger-Themen 4
W Stream Array List - Frage Java Basics - Anfänger-Themen 5
E Interface List nicht als Collection an erkannt. Java Basics - Anfänger-Themen 14
X Array List geordnet ausgeben. (JSF und JAVA) Java Basics - Anfänger-Themen 1
D new arraylist (List) dynamisch erstellen Java Basics - Anfänger-Themen 1
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
M List<String> auswählen Java Basics - Anfänger-Themen 42
F In List Rekursiv suchen Java Basics - Anfänger-Themen 12
B Unterschied zwischen (List<T> a) und (T[] a) Java Basics - Anfänger-Themen 7
T HashSet in List-Object Java Basics - Anfänger-Themen 5
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
E Array-list mit einer bestimmten Länge Java Basics - Anfänger-Themen 17
B Sorting List und Remove Java Basics - Anfänger-Themen 2
B String: suche nach Wörter und in List<String> speichern Java Basics - Anfänger-Themen 3
M Methode überladen - Array List Java Basics - Anfänger-Themen 5
L LIST.ADD Java Basics - Anfänger-Themen 2
M XWPF - Bullet Point list erstellen Java Basics - Anfänger-Themen 1
I <List> sortieren Java Basics - Anfänger-Themen 2
N Klassen List-Art Java Basics - Anfänger-Themen 5
S List<T<X,Y> sortieren Java Basics - Anfänger-Themen 5
Salo Datentypen "Doppelt" List(e) ("gesucht") Java Basics - Anfänger-Themen 6
F .csv Export aus einer list Java Basics - Anfänger-Themen 25
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
B in einem abstrakten Set ,Elemente einer einfache verkettete List epeichern Java Basics - Anfänger-Themen 13
T List und ArrayList Java Basics - Anfänger-Themen 3
UnityFriday method getPrevious in class List<ContentType> cannot be applied to given types Java Basics - Anfänger-Themen 29
T Datentypen InputStream to list of Int (or similar) Java Basics - Anfänger-Themen 4
D Input/Output CSV Parser list unvollständig Java Basics - Anfänger-Themen 25
V Erste Schritte Dateinamen aus einer FIle[] in eine List Java Basics - Anfänger-Themen 11
U JAXB - List wird nicht ausgefüllt Java Basics - Anfänger-Themen 1
J Einfach verkettet List: Ausgabe ohne null Java Basics - Anfänger-Themen 11
D Bestimmten Wert aus Array List ausgeben Java Basics - Anfänger-Themen 7
V Personenverwaltung mit List<>, falsche Ausgaben Java Basics - Anfänger-Themen 5
M List befüllen Java Basics - Anfänger-Themen 3
S Datentypen List.toString wirft NullPointerException Java Basics - Anfänger-Themen 5
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
S Element von List<E> in String umwandeln Java Basics - Anfänger-Themen 3
A Wie nutze ich List<List<String>> Java Basics - Anfänger-Themen 4
M Endlos schleife in List Java Basics - Anfänger-Themen 5
P Zufallszahlen ohne zahlen einer List Java Basics - Anfänger-Themen 21
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
S Probleme bei Ausgabe von rekursiver Methode (List) Java Basics - Anfänger-Themen 16
T Tabstopp in AWT-List? Java Basics - Anfänger-Themen 8
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
M Wozu Upcasting? Am Beispiel List = ArrayList Java Basics - Anfänger-Themen 2
A List mit integern füllen Java Basics - Anfänger-Themen 4
D sortieren von List<> Java Basics - Anfänger-Themen 2
B List - Drag&Drop Java Basics - Anfänger-Themen 8
C List Abfragenproblem Java Basics - Anfänger-Themen 3
J List als anonyme Klasse Java Basics - Anfänger-Themen 9
H Collections List in List<SpecificType> als stat. generische Methode zurückgeben Java Basics - Anfänger-Themen 4
F Wozu braucht man array list? Java Basics - Anfänger-Themen 29
T Collections Wie funktioniert List() ? Java Basics - Anfänger-Themen 7
Kenan89 Java Date List Java Basics - Anfänger-Themen 4
tux20 Problem beim Schreiben von List to File Java Basics - Anfänger-Themen 2
K Frage Set List Java Basics - Anfänger-Themen 3
M Array List ausgeben Java Basics - Anfänger-Themen 13
C Typen aus List<Object[]> ändern Java Basics - Anfänger-Themen 7
S Gute List Implementation Java Basics - Anfänger-Themen 5
A List Array - wie instanzieren Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben