我有两个方法填充一个ArrayList,我希望其中一个方法在偶数位置添加元素,而另一个方法在奇数位置添加元素,这样我就得到一个交错的数据列表。
如何在偶数或奇数位置添加元素?
for (int i = 0; i < mData.size(); i++) {
myList.add( ,mData.get(i))
{
澄清。我不需要偶数或奇数列表,我需要从for循环中的变量i
获取下一个偶数或奇数。即i
至mdata.size()
仅在偶数位置存储元素,即使它超过mData
的大小
答案 0 :(得分:1)
Lists
是具有动态分配大小的结构,因此很难精确地放置在奇数或偶数位置。你添加元素,大小是1,添加第二,大小是2等。
但您可以使用“synchronized”方法按特定顺序向List添加元素。一种方法将首先开始,将在位置0,2,4等处添加元素,而第二种方法在1,3,5等处。
但我不认为List
是正确的结构。如果要将项目精确地添加到奇数或偶数位置,请选择具有固定大小的结构,即经典数组,填充数组,然后您可以将其转换为动态列表(如果您需要在某处传递/发送完成列表)。
答案 1 :(得分:0)
你可以这样做 使用模运算符
if (i % 2 != 0)
{
}
答案 2 :(得分:0)
if(i % 2) == 0
然后i
是偶数。否则,i
是奇数。
%
运算符返回两个数字的余数,例如:
5 % 2
为1,但4 % 2
为0.
模数可能很慢,在你的情况下i
是整数,所以你可以这样做:
if (x & 1 == 0) {
Even
}
答案 3 :(得分:0)
使用以下代码会更好:
public static boolean isEven(int i) {
return (i & 1) == 0;
}
答案 4 :(得分:-1)
这个shure启动一个ConcurrentModificationException,你不能修改一个List(除了它是一个同步列表,如列表和Fujaba库提供的其他集合),而你正在通过它的索引遍历它。我建议你首先克隆List(克隆,不再引用List),遍历克隆,使用Darshan建议的模运算符,并从原始List中删除值。