如何在不使用 Java 集合的情况下对数组列表进行排序

新手上路,请多包涵
ArrayList < Integer > arraylist = new ArrayList < Integer > ();

arraylist.add(10010);
arraylist.add(5);
arraylist.add(4);
arraylist.add(2);

for (int i = 0; i < arraylist.size(); i++) {

    for (int j = arraylist.size() - 1; j > i; j--) {
        if (arraylist.get(i) > arraylist.get(j)) {

            int tmp = arraylist.get(i);
            arraylist.get(i) = arraylist.get(i);
            arraylist.get(j) = tmp;

        }

    }

}
for (int i: arraylist) {
    System.out.println(i);
}

交换时出错,LHS 应该是可变的。我明白了。设置方法在这里有效,但我不想使用。有没有办法不使用 set 方法来做到这一点?非常感谢您的帮助。

原文由 TNJ 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 581
2 个回答
arraylist.get(i)= arraylist.get(i);
arraylist.get(j) =tmp;

您不能为方法调用分配值。正如编译器告诉您的那样,赋值的左侧必须是一个变量。

使用 set 方法:

 arraylist.set(i,arraylist.get(j));
arraylist.set(j,tmp);

有没有办法不使用 set 方法来做到这一点?

否。除非您希望将 ArrayList 转换为数组,否则请对数组进行排序,并使用排序后的数组更新 ArrayList。

原文由 Eran 发布,翻译遵循 CC BY-SA 3.0 许可协议

  Integer[] list={3,5,100,8,17,19};

   for(int i=0;i<list.length;i++){

       for(int j=i+1;j<list.length;j++){

           Integer tempI=list[i];
           Integer tempJ=list[j];

           if(tempI>tempJ){
             list[i]=tempJ;
             list[j]= tempI;

           }

           }
       }

   for(Integer a:list){
       System.out.println(""+a);
   }

原文由 Riyad 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题