2016-12-01 4 views
1

У меня есть задание сделать реестр для класса CD (String artist, String Title), и одним из необходимых в задании было изменение порядка показанных элементов для перехода по названию, а не художникам (в алфавитном порядке). Когда я пытаюсь использовать код ниже, я получаю дубликаты некоторых строк. Есть ли кто-нибудь, кто мог бы мне помочь? : PJava, проблема с возвратом 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

Просто используйте 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

 Смежные вопросы

  • Нет связанных вопросов^_^