2014-02-26 2 views
5

에서 ArrayList의 다중 구현 간의 차이점은 무엇입니까? Java8에서 Stream을 이해하려고 시도하고 간헐적으로 Java8의 소스 코드에서 흥미로운 점을 발견했습니다. ArrayList은 두 번 구현 된 것으로 보입니다. (Java8) 소스 코드

  • 명백한 하나

    : java.util.ArrayList

  • 비 명백한 : 개인 클래스 java.util.Arrays.ArrayList을. Arrays.ArrayList 너무 (직접)하지 않는 반면

홀수 번째 차이점은, 통상의 방법 버전 크다는이며 List<E>을 구현한다.

두 번 정의되는 이유는 무엇입니까? 그리고 왜 같은 이름으로?

+3

Java 8에서는 새로운 기능이 아닙니다. 참조 : http://stackoverflow.com/questions/4792160/arrays-aslist-doubt/4792194#4792194 – assylias

+1

이 클래스는 동일한 이름을 공유하지만 실행되지 않아야합니다. 같은 역할. 'private' 클래스는'Arrays' 내부의 구현 세부 사항이며 배열에'List' 뷰를 제공합니다. 그것은'ArrayViewList' 또는 무엇이라고 불릴 수 있었을 것입니다, 그리고 어쩌면 그것이 척하는 이해에 도움이 될 것입니다. –

답변

5

사실 그 이후로 Arrays.asList()이 소개되었습니다. Array의 ArrayList는 기본 배열의 뷰입니다. Array가 변경되면 ArrayList가 실행되고 viceversa가 발생합니다.

주된 이점은 배열을 새로운 객체 (ArrayList)에 복사하지 않으므로 추가 공간이 필요하지 않으며 요소를 복사 할 추가 시간도 필요하지 않습니다.