-2

我有两种填充一个 ArrayList 的方法,我希望其中一种方法在偶数位置添加元素,而另一种方法在奇数位置添加元素,以便获得交错的数据列表。

如何在偶数或奇数位置添加元素?

for (int i = 0; i < mData.size(); i++) {
     myList.add( ,mData.get(i))
{

澄清。我不需要偶数或奇数的列表,我需要从ifor 循环中的变量中获取下一个偶数或奇数。即imdata.size()在偶数位置存储元素,即使它超过了它的mData大小

4

5 回答 5

1

Lists是具有动态分配大小的结构,因此很难准确地放置在奇数或偶数位置。您添加元素,大小为 1,添加第二个,大小为 2 等。 但是您可以使用“同步”方法以特定顺序将元素添加到列表中。一种方法将首先开始,并将在位置 0、2、4 等处添加元素,而第二种方法将在 1、3、5 等处添加元素。

但我认为这List不是适当的结构。如果您想将项目精确地添加到奇数或偶数位置,请选择具有固定大小的结构,即经典数组,填充数组,然后您可以将其转换为动态列表(如果您需要在某处传递/发送完成列表)。

于 2013-04-06T10:56:56.767 回答
0

您可以使用模运算符执行类似的操作

  if (i % 2 != 0)
        { 



        }
于 2013-04-06T10:45:03.197 回答
0

if(i % 2) == 0然后i是偶数。否则,i就很奇怪了。

运算符返回两个数字的%余数,例如:

5 % 2为 1,但4 % 2为 0。

模数可能很慢,在你的情况下i是整数,所以你可以这样做:

if (x & 1 == 0) {
   Even
}
于 2013-04-06T10:45:11.273 回答
0

使用以下代码可能会更好:

    public static boolean isEven(int i) {
    return (i & 1) == 0;
}
于 2013-04-06T10:46:39.367 回答
-1

这 shure 会启动 ConcurrentModificationException,当您通过它的索引遍历它时,您无法修改列表(除非它是同步列表,例如 Fujaba 库提供的列表和其他集合)。我建议您首先克隆列表(克隆,不再引用列表),遍历克隆,使用 Darshan 建议的模运算符,然后从原始列表中删除值。

于 2013-04-06T10:52:04.753 回答