이 메소드의 역할은 arrayList에서 toRemove
값을 모두 제거하는 것입니다. 나머지 요소는 목록 시작 부분으로 이동해야합니다 (크기는 변경되지 않음). 끝에있는 모든 "추가"요소 (그러나 많은 경우는 toRemove
이 목록에 포함됨)는 0으로 채워 져야합니다.이 메서드에는 반환 값이 없으며 목록에 요소가 없으면 아무런 효과가 없습니다. ArrayList 클래스의 remove()
및 removeAll()
을 사용할 수 없습니다.arrayList를 사용하는이 removeAll java 메소드의 이해
방법 서명은 다음과 같습니다
public static void removeAll(ArrayList<Integer> list, int toRemove);
솔루션 :
public static void removeAll(ArrayList<Integer> list, int toRemove) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i) = toRemove) {
for (int j = i + 1; j < list.size(); j++) {
list.set(j - 1, list.get(j));
}
list.set(list.size() - 1, 0);
i--;
}
}
내가 잘 첫 for
루프와 if
문을 이해합니다. arrayList 전체에 걸쳐 하나씩 반복하고 arrayList에있는 숫자가있는 각 인덱스에 대해 확인하려면 실제로 toRemovee
정수 여야합니다. 이 시점 이후에 나는 길을 잃는다.
왜 다른 for
이 루프 되나요? 왜 우리가 두 번째를 시작합니까? for
-loop one? 그 두 번째 이유는 for
루프는 list.set()
을 사용합니다. set
메서드는 두 개의 인수, 즉 인덱스 위치와 그 지정된 위치에 속하는 요소를 사용한다는 것을 이해합니다. 왜 j-1
일까요? 왜이 두 번째 루프가 끝난 후에는 list.set(list.size()-1, 0)
? 왜 i--
일까요?
많은 움직이는 부분이 있으며 논리를 이해하고 싶습니다.
는 당신에게 감사
if (list.get (i) = toRemove)'=='을 (를) 작성 하시겠습니까? – Moira
가능한 [arrayList를 사용하여이 제거 방법 솔루션 이해] (0120-387-304) –