根据索引的模数将整数添加到 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 % 2
是 0
,因此索引 2 (30
) 处的元素附加到列表的末尾。该列表现在是 [10, 20, 30, 30]
.
我=1
表达式 i % 2
是 1
,因此索引 1 (20
) 处的元素被插入到列表的开头。该列表现在是 [20, 10, 20, 30, 30]
。请注意 20
现在位于列表的开头。
我=0
表达式 i % 2
是 0
,因此索引 0 (20
) 处的元素附加到列表的末尾。该列表现在是 [20, 10, 20, 30, 30, 20]
。请注意,附加的是 20
,而不是 10
,因为 10
不再位于列表的开头,20
是。
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 % 2
是0
,因此索引 2 (30
) 处的元素附加到列表的末尾。该列表现在是[10, 20, 30, 30]
.我=1
表达式
i % 2
是1
,因此索引 1 (20
) 处的元素被插入到列表的开头。该列表现在是[20, 10, 20, 30, 30]
。请注意20
现在位于列表的开头。我=0
表达式
i % 2
是0
,因此索引 0 (20
) 处的元素附加到列表的末尾。该列表现在是[20, 10, 20, 30, 30, 20]
。请注意,附加的是20
,而不是10
,因为10
不再位于列表的开头,20
是。