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方法在这里工作,但我不想使用。 有没有办法不使用set方法呢? 非常感谢帮助。
答案 0 :(得分:7)
arraylist.get(i)= arraylist.get(i);
arraylist.get(j) =tmp;
您无法为方法调用分配值。正如编译器告诉你的那样,赋值的左侧必须是变量。
使用set
方法:
arraylist.set(i,arraylist.get(j));
arraylist.set(j,tmp);
有没有办法不使用set方法呢?
没有。除非您希望将ArrayList转换为数组,否则请对数组进行排序,并使用已排序的数组更新ArrayList。
答案 1 :(得分:2)
交换到列表值的最短方法如下:
arraylist.set(i, arraylist.set(j, arraylist.get(i)));
您可以利用set
方法返回先前值的事实。此算法以Collections.swap
标准方法实现,因此您可以使用它:
Collections.swap(arraylist, i, j);
答案 2 :(得分:2)
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);
}
答案 3 :(得分:1)
您无法直接为ArrayList Index分配值。您必须使用set()方法。 更改您的代码如下:
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.set(i,arraylist.get(j)) ;
arraylist.set(j,tmp);
}
}
}
for (int i: arraylist) {
System.out.println(i);
}
答案 4 :(得分:0)
交换问题:
78.75 1280 1344 1472 1664 760 763 773 790 -hsync +vsync
答案 5 :(得分:0)
import java.util.ArrayList;
import java.util.Scanner;
class Main{
public static String titleCase(String s){
String is = s;
String ret = "";
ret += is.substring(0, 1).toUpperCase();
ret += is.substring(1).toLowerCase();
return ret;
}
public static ArrayList<String> sort(ArrayList<String> list){
for(int z = 0; z <list.size()-1; z++){
if(list.get(z).compareTo(list.get(z+1)) >0){
list.add(z, list.get(z+1));
list.remove(z+2);
}
}
return list;
}
public static void main(String[] args) {
Scanner scan = new Scanner (System.in);
ArrayList<String> names = new ArrayList();
int x = 0;
int count = 0;
String output = "";
while(x != 1){
System.out.println("Enter the next name:");
String temp = scan.next();
temp = titleCase(temp);
if(temp.toLowerCase().equals("stop")){
x = 1;
}
else{
names.add(count, temp);
count++;
}
}
names.equals(sort(names));
System.out.println(names.toString());
}
}
答案 6 :(得分:0)
`import java.util.ArrayList;
import java.util.Collections;
public class SortList {
public static void main(String[] args){
ArrayList<Integer> listToSort = new ArrayList<Integer>();
listToSort.add(10010);
listToSort.add(5);
listToSort.add(4);
listToSort.add(2);
System.out.println("List to SOrt"+listToSort);
for(int i= 0;i<listToSort.size();i++)
{
for (int j=0;j<listToSort.size();j++){
if(listToSort.get(j)>listToSort.get(i)){
int temp=listToSort.get(i);
int temp2=listToSort.get(j);
listToSort.set(j,temp);
listToSort.set(i,temp2);
}
}
}
System.out.println("List SOrted"+listToSort);
}
}
答案 7 :(得分:0)
尝试使用此:
public static void SortingArrayListAsc(List<Integer> list) {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size(); j++) {
if (list.get(i) < list.get(j)) {
Integer temp = list.get(i);
list.set(i, list.get(j));
list.set(j, temp);
}
}
}
}
答案 8 :(得分:-1)
public class SortUsingCollection{
public static void main(String[] args){
ArrayList al=new ArrayList();
al.add(32);
al.add(3);
al.add(23);
al.add(80);
al.add(38);
al.add(31);
al.add(90);
al.add(8);
ListIterator i=al.listIterator();
int k=0;
while(i.hasNext()){
int loop=0;
Integer n=(Integer)i.next();
ListIterator j=al.listIterator();
while(loop<k){
if(j.hasNext())
j.next();
loop++;
}
while(j.hasNext()){
Integer m=(Integer)j.next();
if(m<n){
j.set(n);
i.set(m);
n=m;
}
}
k++;
}
System.out.println(al);
}
}