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

Fel*_*-MB 2 java arraylist modulus

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

}
Run Code Online (Sandbox Code Playgroud)

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

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

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

rge*_*man 5

让我们看看每个循环会发生什么。开始:[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附加了not 10,因为10它不再位于列表的开头20