:제거/LinkedList의 자바에있는 n 번째 노드를 삭제
1-2-3-4-5-6- 후 상관 없음 제거 = 2 : 1-3-5- 또는 n = 3 : 1-2-4-5
감사합니다!
:제거/LinkedList의 자바에있는 n 번째 노드를 삭제
1-2-3-4-5-6- 후 상관 없음 제거 = 2 : 1-3-5- 또는 n = 3 : 1-2-4-5
감사합니다!
는 자바 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/ –