Java 带字符串的ArrayList Bubblesort
排序不起作用,它不按字母表对名称进行排序,我用int编写了一个冒泡排序算法,效果很好。你能帮助我吗?compareTo()方法是否有问题Java 带字符串的ArrayList Bubblesort,java,string,bubble-sort,Java,String,Bubble Sort,排序不起作用,它不按字母表对名称进行排序,我用int编写了一个冒泡排序算法,效果很好。你能帮助我吗?compareTo()方法是否有问题 public ArrayList sortByNames(ArrayList pList) { 足球运动员z; 对于(int i=0;i,您的实现是而不是BubbleSort!检查或事件稍微高级一点 publicstaticvoidbubblesort(列表pList){ 布尔完成=假; 对于(int i=pList.size();!done;i--){ 完成
public ArrayList sortByNames(ArrayList pList)
{
足球运动员z;
对于(int i=0;i,您的实现是而不是BubbleSort!检查或事件稍微高级一点
publicstaticvoidbubblesort(列表pList){
布尔完成=假;
对于(int i=pList.size();!done;i--){
完成=正确;
对于(int j=0;j+1如果(pList.get(j.compareTo)(pList.get(j+1))看起来你是在比较pList.get(i)和pList.get(j+1),但是你是在用pList.get(j)替换pList.get(j)。我相信你应该比较第j个元素和第j+1个元素。谢谢你,我太深陷其中了,以至于忽略了它。就这样吧:-)
public ArrayList<FootballPlayer> sortByNames(ArrayList<FootballPlayer> pList)
{
FootballPlayer z;
for(int i=0; i<pList.size(); i++)
{
for(int j=0; j<pList.size()-i-1;j++)
{
if((pList.get(i).getName()).compareTo(pList.get(j+1).getName())>0)
{
z = pList.get(j);
pList.set(j, pList.get(j+1));
pList.set(j+1,z);
}
}
}
for(int i=0; i<pList.size(); i++)
{
System.out.print(pList.get(i).getName()+";");
System.out.println("");
}
return pList;
}
public static void bubbleSort(List<String> pList) {
boolean done = false;
for (int i = pList.size(); !done; i--) {
done = true;
for (int j = 0; j + 1 < i; j++) {
if (pList.get(j).compareTo(pList.get(j + 1)) <= 0)
continue;
done = false;
String tmp = pList.get(j);
pList.set(j, pList.get(j + 1));
pList.set(j + 1, tmp);
}
}
}
List<String> pList = new ArrayList<>();
for (int i = 0; i < 10; i++)
pList.add(String.valueOf(i));
Collections.shuffle(pList);
System.out.println(pList); // [0, 6, 7, 9, 5, 8, 4, 1, 3, 2]
bubbleSort(pList);
System.out.println(pList); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]