大家好, 我只是试图交换列表项而不管奇数或偶数列表。当列表大小为奇数时,我感觉可能有另一种交换方式。我只是根据我在控制台上看到的错误修补代码。有没有更好的方法来交换列表项目时奇怪的列表项目,如果条件在其他内部。
package org.ada.crm;
import java.util.ArrayList;
import java.util.Collections;
public class AList {
public static void main(String[]args){
String[] num = {"four", "score", "and", "seven", "years", "ago","sure"};
ArrayList<String>list = new ArrayList<String>();
for(int i=0;i<num.length;i++){
list.add(num[i]);
}
System.out.println("****hhh"+list);
swapPair(list);
}
private static void swapPair(ArrayList<String> list) {
int listsize = list.size();
for(int i=0;i<listsize;i+=2){
if(listsize%2==0){
Collections.swap(list, i, i+1);
}else{
if(i+1<listsize) ///here i want to know is there any better solution
Collections.swap(list, i, i+1);
}}
System.out.println("jfsfjdsl"+ list);
}
}
答案 0 :(得分:0)
我认为您正在寻找Arrays.asList(T...)
和Collections.shuffle(List)
的组合
String[] num = {"four", "score", "and", "seven", "years", "ago","sure"};
List<String> list = new ArrayList<>(Arrays.asList(num));
Collections.shuffle(list);
System.out.println(list);
答案 1 :(得分:0)
如果你只想要一些有趣的东西,这里有一个很好的方式。
所以你得到最后一位,然后从列表大小中减去它。
listSize = listSize - 0
。listSize = listSize - 1
。private static void swapPair(List<String> list) {
int listSize = list.size();
listSize -= listSize & 1;
for(int i = 0; i < listSize; i += 2) {
Collections.swap(list, i, i + 1);
}
}