Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe die Klasse CDModel und ein Object Array in dem ich dann halt die verschiedenen cd Objekte reinschreibe. Jetzt möchte ich gerne alle CD's in dem Array nach title, author, index sortieren.
Kann mir jemand sagen wie ich das machen kann?
Bitte keine Vorschläge das ich das in eine Arraylist etc. stecken soll oder das ich irgendwas ändern soll. Das ist für die Berufsschule und ich muss das genau so machen.
Da ich das morgen abgeben muss würde ich mich über eine schnelle Antwort freuen
Vielen Dank schon mal
Java:
import java.io.Serializable;
public class CDModel implements Serializable {
private static final long serialVersionUID = 6743146085709507849L;
private int index;
private String title;
private String author;
private CDSongtitle songTitles[];
public void setIndex(int index) {
this.index = index;
}
public void setAuthor(String interpret) {
author = interpret;
}
public void setSongTitles(CDSongtitle[] songtitle) {
this.songTitles = songtitle;
}
public void setTitle(String title) {
this.title = title;
}
public int getIndex() {
return index;
}
public String getAuthor() {
return author;
}
public CDSongtitle[] getSongtitles() {
return songTitles;
}
public String getTitle() {
return title;
}
}
hab ich auch schon dran gedacht aber ich habs das bisher nur mit zahlen gemacht wie mach ich das mit Objekten wo ich dann auf Titel etc. zugreifen muss.
Bitte keine Vorschläge das ich das in eine Arraylist etc. stecken soll oder das ich irgendwas ändern soll. Das ist für die Berufsschule und ich muss das genau so machen.
wie gezeigt kannst du frei nach einem oder mehreren Kriterien sortieren, aber es stimmt, dass dann die sortierung der Objekte immer gleich ist. Wenn du untersch. Sortierungen haben willst, so musst du das ueber einen externen Comparator loesen
Comparator hat aber dennoch die Vorteile, dass man mehrere davon schreiben kann die jeweils nach einem Kriterium sortieren. Schachteln kann man im Comparator natürlich auch. Daraus ergibt sich für Comparator ein weiterer Vorteil, die Parametrierbarkeit über Flags.
Java:
CDComparator implements Comparator<CDModel> {
private static final int TITLE = 1 << 0;
private static final int INTERPRET = 1 << 1;
//...aso
private int sortFlag;
public CDComparator(int flags) {
sortFlag = flags;
}
public int compare(CDModel cd1, CDModel cd2) {
int rc = 0;
if(sortFlag & TITLE != 0) {
rc = cd1.getTitle().compareTo(cd2.getTitle()
}
if(rc == 0 && sortFlag & INTERPRET != 0) {
rc = cd1.getKuenstler().compareTo(cd2.getKuenstler();
}
//...aso
}
}
Diese Parametrierbarkeit lässt sich zwar auch in Comparable<CDModel> einpflegen, aber BestPractise ist das keineswegs.
Ich denke, "Arrays meiden" bezog sich darauf, dass man Collections verwenden sollte, wenn diese sich anbieten...
anstelle von neu erstellten Arrays mit mehr Kapazität oder ähnlichem.
Für einfache Dinge nutze ich auch Arrays. Wenn man weiß, wieviele Werte man speichern möchte und auch sonst nicht viel damit machen will, reicht das vollkommen aus. Außerdem ist es ja auch so, dass man desöfteren mal Arrays vorgeworfen bekommt statt irgendeiner Collection und dann muss man ja zwangsläufig auch damit arbeiten.
Sind wir doch mal ehrlich - Collections sind viel schöner, und auch einfach zu handhaben. Wer denkt jetzt das ich mich auf die Seite von Collections stelle?
Falsch, tue ich nicht.
Denn Du kannst immer wieder in die Situation kommen, Array verwenden zu müssen (etwa wenn Du eine externe Methode z.B. eine Dienstleistung aus einem Webservice) verwenden musst und die Methode nur mit Arraywerten funktioniert.
Office Integration ist da ein schönes Beispiel.
Collections machen Quellcode übersichtlicher, und damit besser wartbar und weiterentwickelbar, erhöhen also die Qualität. Trotzdem wer meint, einen Bogen um Arrays machen zu können, lebt in einer unwirklichen Welt.
Mein Tipp: Eignet euch das Knownhow an beides einsetzen zu können und entscheidet im Einzelfall welches die bessere Lösung ist.
Da lass ich mich nicht Lumpen...
Alles macht irgendwo immer Sinn, sonst gäbe es solche Konstrukte nicht seien es Singletons, Arrays oder gar Reflection. Bei jedem dieser Dinge steht irgend wo zu lesen, dass man es meiden sollte, aber diese Möglichkeiten wurden mit Sicherheit nicht nur für weniger gute Programmierer in der API gelassen. Alles andere wäre vermessen zu sagen, wenn es sogar die, die und Java bescheren exessiv verwenden. Arrays z.B. für einen recht geniale Art von Object-Reuse bei BufferedImage usw. Meines erachtens sind nämlich die, die solch' vorgelegte Sätze schlicht runterbeten ohne sich jemals weder einen Kopf darum gemacht zu haben noch es Begründen zu können, die weit aus schlechteren Entwickler. Die nehmen dann auch Aussagen wie "einzelne Enumelemente seien Singletons" einfach so hin, obwohl das absoluter Quatsch ist. Dass aber ist schon wieder OT.