我得到了一个为CD类(String artist,String Title)注册的作业,并且作业中的一个必需品是改变所显示元素的顺序,而不是通过标题而不是艺术家(按字母顺序)。当我尝试使用下面的代码但是我得到一些字符串的重复。有没有人可以帮助我? :P
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;
}
答案 0 :(得分: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;
}