Hallo,
ich sollte eine PlayListe die von LinkedList abgeleitet ist nach 4 Kriterien sortieren und möchte euch mal fragen, ob das so stimmt wie ich es gemacht habe.
Bei dieser Aufgabe gibt es eine Klasse Enum SortierKriterium, eine Klasse PlayListe und eine Klasse AudioFile, die noch weitere Subklassen besitzt.
Ich beschränke mich hier nur auf die relevanten Klassen bzw. CodeAusschnitte, da das ganze Projekt viel zu umfangreich ist.
Hier erstmal die Klasse Enum SortierKriterium:
dann die Klasse AudioFile, die das Interface Comparable implementiert und nur AudioFile-Objekte vergleichen soll:
(in dieser Klasse wird bzgl. der Sortierung nur die Methode compareTo von Comparable implementiert...)
und zu allerletzt die PlayListe, die von LinkedList abgeleitet ist:
Vielen Dank erstmal und ein schönes Wochende
cherry07
ich sollte eine PlayListe die von LinkedList abgeleitet ist nach 4 Kriterien sortieren und möchte euch mal fragen, ob das so stimmt wie ich es gemacht habe.
Bei dieser Aufgabe gibt es eine Klasse Enum SortierKriterium, eine Klasse PlayListe und eine Klasse AudioFile, die noch weitere Subklassen besitzt.
Ich beschränke mich hier nur auf die relevanten Klassen bzw. CodeAusschnitte, da das ganze Projekt viel zu umfangreich ist.
Hier erstmal die Klasse Enum SortierKriterium:
Code:
public enum SortierKriterium
{
AUTOR, TITEL; //SortierKriterien
private static SortierKriterium sortKrit;
SortCriterion ()
{
}
//statische Getter und Setter für das Attribut
}
dann die Klasse AudioFile, die das Interface Comparable implementiert und nur AudioFile-Objekte vergleichen soll:
(in dieser Klasse wird bzgl. der Sortierung nur die Methode compareTo von Comparable implementiert...)
Code:
abstract class AudioFile
implements Comparable<AudioFile>
//hier findet nur die Extrahierung von Autor und Titel innerhalb eines Pfadnamens ab und
//ein paar abstract Methoden wie play(), usw. (was im Grunde unwichtig für die Sortierung
//ist
public int compareTo(AudioFile other)
{
//AudioFile.compareTo gibt den Wert des Vergleichs des eigenen Titels mit dem des
//anderen AudioFiles zurück, wenn sortKrit == TITEL ist
if (SortierKriterium.getSortKrit() == SortierKriterium.TITEL)
return this.titel.compareTo(other.getTitle());
//analog dazu dann auch mit AUTOR
else if (SortierKriterium.getSortKrit() == SortierKriterium.AUTOR)
return this.autor.compareTo(other.getAutor());
else
return 0;
}
und zu allerletzt die PlayListe, die von LinkedList abgeleitet ist:
Code:
import java.util.LinkedList;
import java.util.Collections;
public class PlayList
extends LinkedList<AudioFile>
{
//...
//die sort-Methode bekommt ein Sortkriterium übergeben und belegt damit sortKrit vor
public void sort(SortierKriterium sortKrit)
{
SortierKriterium.setSortKrit (sortKrit);
Collections.sort(this);
}
//...
//
public static void main (String[] args)
{
PlayList pl1 = new PlayList();
//in pl1 wird dann einpaar Pfade eingefügt, wo sich halt der Song befindet
//dann wird mit pl1.sort aufgerufen
pl1.sort(SortierKriterium.AUTOR);
}
}
Vielen Dank erstmal und ein schönes Wochende
cherry07