2016-12-01 85 views
1

我得到了一個CD類(String artist,String Title)註冊的任務,分配中的其中一項必需品是改變顯示的元素的順序按標題而不是按藝術家(按字母順序)。當我嘗試使用下面的代碼但是我得到一些字符串的重複。有沒有人可以幫助我? :PJava,返回字符串有問題

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

只需使用Collections.sort與比較。 (除非明確提到您要實現自己的排序算法) – wvdz

+0

http://stackoverflow.com/questions/18441846/how-to-sort-an-arraylist-in-java – fantaghirocco

回答

0

要解決你的代碼,你可以做這樣的事情:

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

感謝您的幫助! – Hazzlarn