답변:
우선 : a List
는입니다 Collection
. Collection
그러나 전문화 되어 있습니다.
ㅏ Collection
는 바로 그 것입니다. 항목 모음입니다. 물건을 추가하고 물건을 제거하고 물건을 반복하고 물건의 양을 쿼리 할 수 있습니다.
A는 List
그것에 물건의 정의 된 순서에 대한 정보를 추가합니다 : 당신은 위치에있는 요소를 얻을 수있는 N , 당신은 위치에 요소를 추가 할 수 있습니다 N 당신은 위치에있는 요소를 제거 할 수 없음 .
A의 Collection
당신은 그렇게 할 수 없습니다 : "이 컬렉션의 5 요소가"정의되지 않은, 아니 정의 순서가 있기 때문에.
예를 들어 Set
같은 요소를 두 번 포함하지 않는 기능을 추가하는 다른 특수 컬렉션도 있습니다 .
Collection
java Collections 계층에 대한 루트 인터페이스입니다. List
정렬 된 컬렉션을 정의하는 하나의 하위 인터페이스이고, 다른 하위 인터페이스는 Queue
일반적으로 처리 할 준비가 된 요소를 저장합니다 (예 : 스택 ).
다음 다이어그램은 다른 Java 콜렉션 유형 간의 관계를 보여줍니다.
Map
아닌 것 같아요 Collection
.
Java API가 이것에 가장 적합합니다.
수집
컬렉션 계층의 루트 인터페이스 컬렉션은 해당 요소로 알려진 개체 그룹을 나타냅니다. 일부 컬렉션은 중복 요소를 허용하고 다른 컬렉션은 중복 요소를 허용하지 않습니다. 일부는 순서가 있고 일부는 순서가 없습니다. JDK는이 인터페이스의 직접적인 구현을 제공하지 않습니다. Set 및 List와 같은보다 구체적인 하위 인터페이스의 구현을 제공합니다. 이 인터페이스는 일반적으로 컬렉션을 전달하고 최대 일반성이 필요한 곳에서 컬렉션을 조작하는 데 사용됩니다.
리스트 (컬렉션 연장)
정렬 된 컬렉션 (시퀀스라고도 함). 이 인터페이스의 사용자는 목록에서 각 요소가 삽입되는 위치를 정확하게 제어 할 수 있습니다. 사용자는 정수 인덱스 (목록의 위치)로 요소에 액세스하고 목록에서 요소를 검색 할 수 있습니다.
집합과 달리 목록은 일반적으로 중복 요소를 허용합니다. 보다 공식적으로,리스트는 일반적으로 e1.equals (e2)와 같이 요소 e1과 e2의 쌍을 허용하며, 널 요소를 전혀 허용하지 않으면 일반적으로 여러 널 요소를 허용합니다. 사용자가 삽입하려고 할 때 런타임 예외를 발생시켜 중복을 금지하는 목록을 구현하려는 사람은 상상할 수 없지만,이 사용법은 드물 것으로 예상됩니다.
콜렉션 은 다른 오브젝트의 콜렉션을 포함 할 수있는 Java 오브젝트를 설명하는 고급 인터페이스입니다. 동일한 오브젝트의 여러 사본이 동일한 콜렉션에 존재할 수 있는지 또는 순서가 중요한지에 대한 액세스 방법에 대해서는 구체적이지 않습니다. 목록 은 구체적으로 정렬 된 객체 모음입니다. 개체를 특정 순서로 List에 넣으면 해당 순서대로 유지됩니다.
그리고이 두 인터페이스를 사용할 위치를 결정하는 것은 구체적인 구현이 무엇인지 결정하는 것보다 훨씬 덜 중요합니다. 이는 프로그램의 시간 및 공간 성능에 영향을 미칩니다. 예를 들어, 목록을 원할 경우 ArrayList 또는 LinkedList를 사용할 수 있습니다. 각 목록은 응용 프로그램에 영향을 미칩니다. 다른 수집 유형 (예 : 세트)의 경우 유사한 고려 사항이 적용됩니다.
Collection 은 List의 Super 인터페이스이므로 모든 Java 목록은 컬렉션의 인스턴스입니다. 컬렉션은 순차적으로 만 (특별한 순서로) 반복 할 수없는 반면, List는 get(int index)
메서드 를 통해 특정 위치에서 요소에 액세스 할 수 있습니다 .