根据索引的模数将整数添加到 ArrayList

Adding integers to an ArrayList depending on the modulus of their indexes

import java.util.*;
public class AddingIntegers{

     public static void main(String []args){
        ArrayList <Integer> list = new ArrayList<>(Arrays.asList(10,20,30));

        add(list);
     }


public static void add(ArrayList<Integer> list) {
    for (int i = list.size() - 1; i >= 0; i--) {
        if (i % 2 == 0) {
            list.add(list.get(i));
        } else {
            list.add(0, list.get(i));
        }
    }
    System.out.println(list);
}

}

预期输出:[20、10、20、30、30、10]

实际输出:[20, 10, 20, 30, 30, 20]

所以我不明白为什么对于最后一个索引,当i = 0时,在列表末尾添加20,我认为应该是10。

让我们看看每个循环会发生什么。开始:[10, 20, 30].

  • 我=2

    表达式 i % 20,因此索引 2 (30) 处的元素附加到列表的末尾。该列表现在是 [10, 20, 30, 30].

  • 我=1

    表达式 i % 21,因此索引 1 (20) 处的元素被插入到列表的开头。该列表现在是 [20, 10, 20, 30, 30]。请注意 20 现在位于列表的开头。

  • 我=0

    表达式 i % 20,因此索引 0 (20) 处的元素附加到列表的末尾。该列表现在是 [20, 10, 20, 30, 30, 20]。请注意,附加的是 20,而不是 10,因为 10 不再位于列表的开头,20 是。