私は、例えばLinkedListの内の任意のn番目のノードを削除する方法を知りたい:削除/ LinkedListはJavaで任意のn番目のノードを削除
1-2-3-4-5-6- をした後の任意のnを削除= 2: 1-3-5- またはn = 3: 1-2-4-5
ありがとうございました!
私は、例えばLinkedListの内の任意のn番目のノードを削除する方法を知りたい:削除/ LinkedListはJavaで任意の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);
まだLinkedListを使用することはできません
を私は混乱を削除すること、それが非常に明確になされていなかったという事実から来たと考えています最初のリストにあるように、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;
}
}
}
そしてここでは、毎秒のための試験であり、それを証明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);
}
}
まだLinkedListを使用できません
.remove(インデックス)は動作しません。 ? – Loc
Javadoc:[remove(int index)](http://docs.oracle.com/javase/7/docs/api/java/util/LinkedList.html#remove(int)) –
inbuiltクラスを使用していない場合'LinkedList'をクリックすると、このリンクが役立ちます(n> 2で一般化するだけです): http://www.geeksforgeeks.org/delete-alternate-nodes-of-a-linked-list/ –