我有一个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个等?我不能完全理解我为完成它而需要做的数学。
感谢。
答案 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]