更新时间:2023-09-09 22:38:28
arraylist.get(i)= arraylist.get(i);arraylist.get(j) =tmp;
您不能为方法调用赋值.正如编译器告诉你的,赋值的左边必须是一个变量.
使用set
方法:
arraylist.set(i,arraylist.get(j));arraylist.set(j,tmp);
有没有不使用 set 方法的方法?
没有.除非您希望将 ArrayList 转换为数组,否则请对数组进行排序,然后使用排序后的数组更新 ArrayList.
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);
}
It is giving error while swapping, The LHS should be variable. I understand it. Set method works here but I do not want to use. Is there a way to do it without using set method? Help is really appreciated.
arraylist.get(i)= arraylist.get(i);
arraylist.get(j) =tmp;
You can't assign a value to a method call. As the compiler told you, the left hand side of an assignment must be a variable.
Use set
method :
arraylist.set(i,arraylist.get(j));
arraylist.set(j,tmp);
Is there a way to do it without using set method?
No. Unless you wish to convert your ArrayList to an array, sort the array, and update the ArrayList with the sorted array.