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