Arraylist(偶数/奇数)交换元素java

时间:2014-11-08 04:12:25

标签: java

大家好,              我只是试图交换列表项而不管奇数或偶数列表。当列表大小为奇数时,我感觉可能有另一种交换方式。我只是根据我在控制台上看到的错误修补代码。有没有更好的方法来交换列表项目时奇怪的列表项目,如果条件在其他内部。

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);
    }

}

2 个答案:

答案 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)

如果你只想要一些有趣的东西,这里有一个很好的方式。

  • 如果二进制数是偶数,则最后一位为0.
  • 如果二进制数为奇数,则最后一位为1.

所以你得到最后一位,然后从列表大小中减去它。

  • 对于偶数列表大小: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);
    }
}