Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除偶数索引处的元素_Java - Fatal编程技术网

Java 删除偶数索引处的元素

Java 删除偶数索引处的元素,java,Java,removeElementsAtevenIndexes()方法应删除LinkedList中偶数索引处的对象。例如,如果链接列表包含{Apple,Banana,humber,Orange},那么调用此方法后,链接列表应该包含{Banana,Orange},因为索引0处的Applet和索引2处的humber都需要删除。LinkedList中的每个元素都可以从索引0开始标记,基于此假设,应该删除元素。如果LinkedList不包含任何元素,则该方法不应更改其内容 我目前有这个代码,但它只会删除奇数标记

removeElementsAtevenIndexes()
方法应删除
LinkedList
中偶数索引处的对象。例如,如果
链接列表
包含
{Apple,Banana,humber,Orange}
,那么调用此方法后,
链接列表
应该包含
{Banana,Orange}
,因为索引0处的Applet和索引2处的humber都需要删除。
LinkedList
中的每个元素都可以从索引0开始标记,基于此假设,应该删除元素。如果
LinkedList
不包含任何元素,则该方法不应更改其内容

我目前有这个代码,但它只会删除奇数标记

 public void removeElementsAtEvenIndices()
 {
     ListIterator iterator = listIterator();
     while(iterator.hasNext())
     {
        iterator.next();
        if(iterator.hasNext())
        {
           iterator.next();
           iterator.remove();
        }
     }

}
这应该起作用:

public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();

    while(iterator.hasNext()) {
        iterator.remove();

        if(iterator.hasNext())
            iterator.next();
     }
}
这应该起作用:

public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();

    while(iterator.hasNext()) {
        iterator.remove();

        if(iterator.hasNext())
            iterator.next();
     }
}

按照您当前的方法,您可以这样做:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    while (iterator.hasNext())
    {
        iterator.next();
        iterator.remove();      
        if (iterator.hasNext()) iterator.next();
    }
}
不过,我想更清楚地表明我的意图:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    for (int i=0; iterator.hasNext(); i++)
    {
        iterator.next();
        if ((i % 2) == 0) iterator.remove();
    }
}
或者可能是这样:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    for (boolean even=true; iterator.hasNext(); even=!even)
    {
        iterator.next();
        if (even) iterator.remove();
    }
}

按照您当前的方法,您可以这样做:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    while (iterator.hasNext())
    {
        iterator.next();
        iterator.remove();      
        if (iterator.hasNext()) iterator.next();
    }
}
不过,我想更清楚地表明我的意图:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    for (int i=0; iterator.hasNext(); i++)
    {
        iterator.next();
        if ((i % 2) == 0) iterator.remove();
    }
}
或者可能是这样:

public void removeElementsAtEvenIndices()
{
    ListIterator iterator = listIterator();
    for (boolean even=true; iterator.hasNext(); even=!even)
    {
        iterator.next();
        if (even) iterator.remove();
    }
}

通过使用计数器,您可以纠正问题,并使代码更易于理解,如下所示:

public void removeElementsAtEvenIndices() {
    int counter = 0;
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        if (counter % 2 == 0) {
            iterator.remove();
        }
        counter++;
    }
}
public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
        if (iterator.hasNext()) {
            iterator.next();
        }
    }
}
或者,您可以通过将
iterator.remove()
提升一级来解决此问题,如下所示:

public void removeElementsAtEvenIndices() {
    int counter = 0;
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        if (counter % 2 == 0) {
            iterator.remove();
        }
        counter++;
    }
}
public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
        if (iterator.hasNext()) {
            iterator.next();
        }
    }
}

通过使用计数器,您可以纠正问题,并使代码更易于理解,如下所示:

public void removeElementsAtEvenIndices() {
    int counter = 0;
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        if (counter % 2 == 0) {
            iterator.remove();
        }
        counter++;
    }
}
public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
        if (iterator.hasNext()) {
            iterator.next();
        }
    }
}
或者,您可以通过将
iterator.remove()
提升一级来解决此问题,如下所示:

public void removeElementsAtEvenIndices() {
    int counter = 0;
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        if (counter % 2 == 0) {
            iterator.remove();
        }
        counter++;
    }
}
public void removeElementsAtEvenIndices() {
    ListIterator iterator = listIterator();
    while (iterator.hasNext()) {
        iterator.next();
        iterator.remove();
        if (iterator.hasNext()) {
            iterator.next();
        }
    }
}

您现在的逻辑是“跳过一个元素,然后删除一个,…”。你只需要改变这一点,然后做“删除一个元素,然后跳过一个…”。帕克-如果其中一个答案解决了你的问题,你可以通过将其标记为已接受来帮助社区。公认的答案有助于未来的访问者自信地使用解决方案。检查以了解如何操作。您现在的逻辑是“跳过一个元素,然后删除一个,…”。你只需要改变这一点,然后做“删除一个元素,然后跳过一个…”。帕克-如果其中一个答案解决了你的问题,你可以通过将其标记为已接受来帮助社区。公认的答案有助于未来的访问者自信地使用解决方案。检查以了解如何做。