在Java中反转ArrayList,一次反转4个元素

时间:2016-07-26 07:46:18

标签: java list arraylist reverse reorderlist

我有一个20个整数的ArrayList,实际上代表5组4个数字,如下所示:

1 5 9  13 17
2 6 10 14 18
3 7 11 15 19
4 8 12 16 20

我想翻转它,看起来像这样:

4 8 12 16 20
3 7 11 15 19
2 6 10 14 18
1 5 9  13 17

我已经看到了关于如何反转整个列表的其他答案,但是我将如何遍历此20列表,反转前4个,然后是下4个等?我不能完全理解我为完成它而需要做的数学。

感谢。

2 个答案:

答案 0 :(得分:0)

试试这个(伪代码):

List list

int nbrElements = list.size() / 4 // number of elements, each containing 4 numbers

int index1 = 0
int index2 = nbrElements-1

while index1 < index2
    for i in {0,1,2,3} // for each number in element
        switch(index1*4+i, index2*4+i) // define a method to switch numbers
    index1++
    index2--

答案 1 :(得分:0)

您可以使用以下逻辑

     List<Integer> al= Arrays.asList(1, 5, 9,  13, 17,
            2, 6, 10, 14, 18,
            3, 7, 11, 15, 19,
            4, 8, 12, 16, 20);

    int setSize=5,listSize=al.size();
    for(int i=listSize-setSize;i>=0;i-=setSize){
        //Instead of printing you can add the sublist to a new list
        System.out.println(al.subList(i, i+setSize));
    }

它产生以下输出

[4, 8, 12, 16, 20]
[3, 7, 11, 15, 19]
[2, 6, 10, 14, 18]
[1, 5, 9, 13, 17]