Java에서 Collection과 List의 차이점은 무엇입니까?


153

Java CollectionListJava 의 차이점은 무엇입니까 ? 언제 사용해야합니까?


공용 인터페이스 목록 모음 {} 확장
rai.skumar

답변:


263

우선 : a List는입니다 Collection. Collection그러나 전문화 되어 있습니다.

Collection 는 바로 그 것입니다. 항목 모음입니다. 물건을 추가하고 물건을 제거하고 물건을 반복하고 물건의 양을 쿼리 할 수 ​​있습니다.

A는 List그것에 물건의 정의 된 순서에 대한 정보를 추가합니다 : 당신은 위치에있는 요소를 얻을 수있는 N , 당신은 위치에 요소를 추가 할 수 있습니다 N 당신은 위치에있는 요소를 제거 할 수 없음 .

A의 Collection당신은 그렇게 할 수 없습니다 : "이 컬렉션의 5 요소가"정의되지 않은, 아니 정의 순서가 있기 때문에.

예를 들어 Set같은 요소를 두 번 포함하지 않는 기능을 추가하는 다른 특수 컬렉션도 있습니다 .


9
list,리스트는 소장품의 주문을 전문으로하는 것입니다 (하지만 분류되지는 않음) +1
atamanroman

2
자바 목록 컬렉션이 인터페이스 확장 위치에 도움이 검색 및 제거 행동 기반 인덱싱 기능 빌드
frictionlesspulley

188

Collectionjava Collections 계층에 대한 루트 인터페이스입니다. List정렬 된 컬렉션을 정의하는 하나의 하위 인터페이스이고, 다른 하위 인터페이스는 Queue일반적으로 처리 할 준비가 된 요소를 저장합니다 (예 : 스택 ).

다음 다이어그램은 다른 Java 콜렉션 유형 간의 관계를 보여줍니다.

자바 컬렉션


1
SCJP를 준비 할 때 이미지를 보았지만 요즘에는 거의 모든 것을 잊어 버렸습니다.
Truong Ha

1
이 이미지 가이 블로그에서 밀려났다 는 것을 인정해야합니다 . 나도 K & B SCJP 책 에서 이와 같은 다이어그램을 처음 보았다 .
krock

scjp 인증서에서 많은 것을 배울 수 있습니다.이 주제에 관한 대부분의 책은 훌륭합니다 :)
atamanroman

나는 Map아닌 것 같아요 Collection.
지아 니스 크리스토 파 키스

7

Java API가 이것에 가장 적합합니다.

수집

컬렉션 계층의 루트 인터페이스 컬렉션은 해당 요소로 알려진 개체 그룹을 나타냅니다. 일부 컬렉션은 중복 요소를 허용하고 다른 컬렉션은 중복 요소를 허용하지 않습니다. 일부는 순서가 있고 일부는 순서가 없습니다. JDK는이 인터페이스의 직접적인 구현을 제공하지 않습니다. Set 및 List와 같은보다 구체적인 하위 인터페이스의 구현을 제공합니다. 이 인터페이스는 일반적으로 컬렉션을 전달하고 최대 일반성이 필요한 곳에서 컬렉션을 조작하는 데 사용됩니다.

리스트 (컬렉션 연장)

정렬 된 컬렉션 (시퀀스라고도 함). 이 인터페이스의 사용자는 목록에서 각 요소가 삽입되는 위치를 정확하게 제어 할 수 있습니다. 사용자는 정수 인덱스 (목록의 위치)로 요소에 액세스하고 목록에서 요소를 검색 할 수 있습니다.

집합과 달리 목록은 일반적으로 중복 요소를 허용합니다. 보다 공식적으로,리스트는 일반적으로 e1.equals (e2)와 같이 요소 e1과 e2의 쌍을 허용하며, 널 요소를 전혀 허용하지 않으면 일반적으로 여러 널 요소를 허용합니다. 사용자가 삽입하려고 할 때 런타임 예외를 발생시켜 중복을 금지하는 목록을 구현하려는 사람은 상상할 수 없지만,이 사용법은 드물 것으로 예상됩니다.


3

List와 Set은 Collection의 두 하위 클래스입니다.

목록에서 데이터는 특정 순서입니다.

세트에서는 동일한 데이터를 두 번 포함 할 수 없습니다.

Collection에서는 특정 순서없이 데이터 만 저장하며 중복 데이터를 포함 할 수 있습니다.


2

콜렉션 은 다른 오브젝트의 콜렉션을 포함 할 수있는 Java 오브젝트를 설명하는 고급 인터페이스입니다. 동일한 오브젝트의 여러 사본이 동일한 콜렉션에 존재할 수 있는지 또는 순서가 중요한지에 대한 액세스 방법에 대해서는 구체적이지 않습니다. 목록 은 구체적으로 정렬 된 객체 모음입니다. 개체를 특정 순서로 List에 넣으면 해당 순서대로 유지됩니다.

그리고이 두 인터페이스를 사용할 위치를 결정하는 것은 구체적인 구현이 무엇인지 결정하는 것보다 훨씬 덜 중요합니다. 이는 프로그램의 시간 및 공간 성능에 영향을 미칩니다. 예를 들어, 목록을 원할 경우 ArrayList 또는 LinkedList를 사용할 수 있습니다. 각 목록은 응용 프로그램에 영향을 미칩니다. 다른 수집 유형 (예 : 세트)의 경우 유사한 고려 사항이 적용됩니다.


2

Collection 은 List의 Super 인터페이스이므로 모든 Java 목록은 컬렉션의 인스턴스입니다. 컬렉션은 순차적으로 만 (특별한 순서로) 반복 할 수없는 반면, List는 get(int index)메서드 를 통해 특정 위치에서 요소에 액세스 할 수 있습니다 .


2

Collection은 Java Collections 계층 구조의 기본 인터페이스이며 List (Sequence)는 정렬 된 컬렉션을 정의하는 하위 인터페이스 중 하나입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.