2016-12-01 5 views
1

Ich habe eine Aufgabe, um ein Register für eine Klasse von CDs (String-Künstler, String-Titel) zu machen, und eine der Notwendigkeiten in der Zuordnung war die Reihenfolge der Elemente zu ändern nach Titel statt nach Künstlern (alphabetisch). Wenn ich versuche, den Code unten zu verwenden, erhalte ich jedoch Duplikate einiger Strings. Gibt es jemanden, der mir helfen könnte? : PJava, Probleme mit zurückgegebenen String

private ArrayList<CD> reg; 

String showSortedTitles() { 
    String sortedTitles; 
    StringBuilder sb = new StringBuilder(); 
    ArrayList<CD> temp = new ArrayList<CD>(); 
    temp.add(reg.get(0)); 
    for (int i = 1; i < reg.size(); i++) { 
     String beftitle = temp.get(i - 1).getTitle(); 
     String newTitle = reg.get(i).getTitle(); 
     if ((newTitle.compareTo(beftitle) < 0)) { 
      for (int k = 0; k < temp.size(); k++) { 
       if (newTitle.equals(temp.get(k).getTitle())) { 
        temp.remove(k); 
       } 
       if (newTitle.compareTo(temp.get(k).getTitle()) < 0) { 
        temp.add(k, reg.get(i)); 
        break; 
       } else { 
        temp.add(reg.get(i)); 
       } 
      } 
     } 
    } 
    for (int i = 0; i < temp.size(); i++) { 
     CD cd = temp.get(i); 
     sb.append(cd.getArtist() + (char) ' ' + (char) '-' + (char) ' ' + cd.getTitle() + (char) '\n'); 
    } 

    sortedTitles = sb.toString(); 
    return sortedTitles; 
} 
+4

Nur Collections.sort mit einem Vergleicher verwenden. (Sofern nicht explizit erwähnt, dass Sie Ihren eigenen Sortieralgorithmus implementieren sollen) – wvdz

+0

http://StackOverflow.com/Questions/18441846/How-to-sort-an-arlylist-in-java – fantaghirocco

Antwort

0

Code zu beheben, können Sie etwas tun:

public static List<CD> sortedTitle(List<CD> list) { 
    List<CD> newList = list; // "copy your list" 
    for (int i = 0; i < newList.size(); i++) { 
     for (int j = i + 1; j < newList.size(); j++) { 
      //comparing 
      if (newList.get(i).getTitle().compareTo(newList.get(j).getTitle()) > 0) { 
       //"replace; change position" 
       CD temp = newList.get(i); 
       newList.set(i, list.get(j)); 
       newList.set(j, temp); 
      } 
     } 
    } 
    //return sorted list 
    return newList; 
} 
+0

Vielen Dank für Ihre Hilfe !! – Hazzlarn