문제

나는 Java 문서를 살펴보고 있었고 Arraylist의 명확한 () 방법을 발견했습니다.

새로운 Arraylist 객체를 변수에 단순히 재 할당하는 것과는 달리 이것의 사용은 무엇입니까?

도움이 되었습니까?

해결책

하나의 목록에 대한 여러 참조가있을 수 있으므로 모든 참조를 재 할당하는 것보다 우선적으로 수행하는 것이 바람직하거나 더 실용적 일 수 있습니다.

배열을 많이 비우면 (예를 들어, 큰 루프 내에서) 임시 객체를 많이 만드는 점이 없습니다. 물론 쓰레기 수집가는 결국 청소하지만 필요하지 않으면 자원으로 낭비되는 것은 없습니다.

목록을 지우는 것은 새 작품을 만드는 것보다 작업이 적기 때문입니다.

다른 팁

최종 필드 (클래스 변수)가있을 수 있습니다. List:

private final List<Thing> things = ...

수업의 어딘가에 모든 것을 지우고 싶어합니다. 부터 things 최종적으로 재 할당 할 수 없습니다. 또한, 이미 완벽하게 좋은 목록이 인스턴스화되어 있으므로 새로운 목록 인스턴스를 재 할당하고 싶지 않을 것입니다.

동일한 참조가있는 상황을 상상해보십시오. java.util.ArrayList 코드 전체에서. 목록의 새 인스턴스를 작성하고 모든 변수에 할당하는 것은 거의 불가능하거나 매우 어려울 것입니다. 하지만 java.util.ArrayList.clear() 트릭을합니다!

당신의 목표가 실제로 명확하다면 당신은 새로운 객체를 만드는 것보다 명확하게 지불합니다.

참조를 재 할만해도 객체를 지우지 않습니다. 다른 언급이 없다면 GC가 비교적 빨리 되돌아 갈 것이라고 가정합니다. 그렇지 않으면, 당신은 방금 엉망이되었습니다.

언급 된 이유 외에도 목록을 지우는 것은 종종 새로운 사람을 만드는 것보다 의미 적으로 정확합니다. 원하는 결과가 정리 된 목록 인 경우, 귀하가 취해야 할 조치는 새 목록을 작성하지 않고 목록을 지우는 것입니다.

Clear ()는 새 객체를 재 할당하지 않으므로 성능이 적습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top