删除/删除LinkedList Java中的任何第n个节点

删除/删除LinkedList Java中的任何第n个节点,java,linked-list,nodes,Java,Linked List,Nodes,我想知道如何删除LinkedList中的任何第n个节点,例如: 1-2-3-4-5-6- 移除任何n=2后: 1-3-5- 或n=3: 1-2-4-5 谢谢 如果您使用的是Java 8,请执行以下操作: linkedList.removeIf((i) -> i % n == 0); 例如: int n = 2; LinkedList<Integer> ll = new LinkedList<>(Arrays.asList(1,2,3,4,5,6)); ll.re

我想知道如何删除LinkedList中的任何第n个节点,例如:

1-2-3-4-5-6- 移除任何n=2后: 1-3-5- 或n=3: 1-2-4-5


谢谢

如果您使用的是Java 8,请执行以下操作:

linkedList.removeIf((i) -> i % n == 0);
例如:

int n = 2;
LinkedList<Integer> ll = new LinkedList<>(Arrays.asList(1,2,3,4,5,6));

ll.removeIf((i) -> i % n == 0);
System.out.println(ll);
int n=2;
LinkedList ll=新的LinkedList(Arrays.asList(1,2,3,4,5,6));
ll.removeIf((i)->i%n==0);
系统输出打印项次(ll);

我认为混淆是因为没有很清楚地表明您希望删除初始列表中的每一个第n个元素,我认为这就是问题被标记的原因

但是,这里有一种方法:

public class ListRemover<T> {
    public void removeEvery(int n, List<T> list) {
        int i = 1;
        int removeFrom = n - 1;
        while (removeFrom < list.size()) {
            list.remove(removeFrom);
            ++i;
            removeFrom = n * i - i;
        }
    }
}
公共类ListRemover{
公共无效删除(int n,列表){
int i=1;
int-removfrom=n-1;
while(从
下面是每秒钟和ebery第三次移除的测试,证明它是有效的:

public class ListRemoverTest {
    @Test
    public void shouldRemoveEverySecondElement() throws Exception {
        List<Integer> intList = IntStream.range(1, 10).boxed().collect(toList());
        new ListRemover<Integer>().removeEvery(2, intList);
        assertEquals(Arrays.asList(1, 3, 5, 7, 9), intList);
    }

    @Test
    public void shouldRemoveEveryThirdElement() throws Exception {
        List<Integer> intList = IntStream.range(1, 10).boxed().collect(toList());
        new ListRemover<Integer>().removeEvery(3, intList);
        assertEquals(Arrays.asList(1, 2, 4, 5, 7, 8), intList);
    }
}
公共类ListTest{
@试验
public void shouldRemoveeVerySeCondenlement()引发异常{
List intList=IntStream.range(1,10).boxed().collect(toList());
新ListRemover().removeEvery(2,intList);
assertEquals(Arrays.asList(1,3,5,7,9),intList);
}
@试验
public void shouldRemoveyThirdElement()引发异常{
List intList=IntStream.range(1,10).boxed().collect(toList());
新ListRemover().removeEvery(3,intList);
assertEquals(Arrays.asList(1,2,4,5,7,8),intList);
}
}

.remove(index)不起作用?Javadoc:如果您没有使用内置类
LinkedList
,则此链接将对您有所帮助(您只需对n>2进行概括):您对这两种工作解决方案的注释不清楚。如果您使用的是Java8,那么它不可能比D_plus的简单。如果这不是您想要的,请更清楚地解释您想要实现的目标。我们仍然不允许使用LinkedList我们构建LinkedList我们仍然不允许使用LinkedList我们构建LinkedList