정렬 된 컬렉션과 정렬 된 컬렉션의 차이점은 무엇입니까?


132

정렬 컬렉션 과 정렬 된 컬렉션 간에 차이가 있습니까?


1
여기에 문자 그대로 너무 답하지 마십시오. 그 정의는 널리 이해되고 인정되는 종류이지만 컴퓨터 용어의 사실상 정의는 아닙니다. 예를 들어, .NET에서 열거 호출 할 때 "분류"를위한 인터페이스 IOrderedEnumerable (재미있는 것은 .NET.에 "삽입 순서".NET에서 respectin 사전이라고에서 매우 일치하지 않는 OrderedDictionary, 어떤 말을 비교하여 잘못된 판단하는 IndexedDictionary) . 자바 세계에서 그렇습니다 (대부분 다른 곳에서도). 자세한 내용은 여기를 참조 하십시오 .
nawfal

일부 구현 인스턴스에서 이름이 잘못되면 오류를 전파 할 이유가 없습니다. 좋은 답변이며 좋은 질문입니다. 적절한 이름을 사용하십시오-자신을 포함한 모든 사람의 혼란을 줄이는 데 도움이됩니다.
foo

답변:


166

수집 순서 컬렉션의 요소가 특정 순서를 것을 의미합니다. 순서는 값과 무관합니다. 목록은 예입니다.

A는 수집 분류 컬렉션이 순서를 가지고뿐만 아니라 의미하지만, 순서는 요소의 값에 따라 달라집니다. 된 SortedSet 예이다.

반대로, 순서없는 컬렉션 은 요소를 임의의 순서로 유지할 수 있습니다. 설정은 예입니다.


1
우선 순위 대기열은 주문 컬렉션입니까?
overexchange

@overexchange 위의 정의를 고려할 때 우선 순위는 거의 항상 큐 요소의 속성으로 정의되므로 우선 순위 큐는 정렬 된 컬렉션이됩니다.
cdeszaq

SortedSet이 Set에서 상속되었고 그것과 is-a 관계를 가지고 있다면 어떻게 Set이 어떤 순서도 없다고 말할 수
있습니까

79

순서가 지정된 컬렉션은 컬렉션에 항목을 넣거나 제거하는 순서에 따라 요소의 순서를 유지합니다.

정렬 된 컬렉션은 정렬 기준에 따라 요소를 정렬 된 상태로 유지합니다.


18

Java는 "순서 모음"을 사용하여 List와 같은 모음을 의미합니다. 여기서 HashSet과 달리 모음은 요소의 순서를 기억하므로 순서에 따라 특정 "장소"에서 요소를 모음에 추가 할 수 있습니다. .

Java는 "정렬 된 컬렉션"을 사용하여 SortedSet과 같은 컬렉션을 의미합니다. 여기서 List와 달리 이터레이터가 컬렉션을 통과하는 순서는 지정된 Comparator 또는 요소의 자연 순서에 따릅니다.

차이점은 순서가 값에 따라 달라지는 지 ( "정렬 된") 요소가 값과 독립적으로 갖는 속성 ( "순서")인지입니다.


1
"Java"를 언급하면 ​​좋은 답변이되고 +1이됩니다. 그것 너무 좋아 대부분의 장소에서 허용 정의 OrderedDict파이썬한다. 그러나 .NET에서는 "정렬 된"열거 가능한 인터페이스를 호출 IOrderedEnumerable합니다. 따라서 다릅니다. 그냥 ..
nawfal

9

예, 개념은 비슷하지만

List 정렬 된 컬렉션 : 각 요소에는 요소의 순서를 구성하는 색인이 있지만 일반적으로 요소 자체의 속성과 관련이 없습니다.

SortedMap그리고 SortedSet수집, 수집은 소자 자체에서 유래하는 순서로 일어날 것을 반복 처리 수단에 정렬된다. 예를 들어, SortedSet<String>문자열이 있으면 사전 식 정렬 순서에 따라 문자열이 정렬됩니다.

주문한 컬렉션 정렬 수 있지만 Collections.sort()외부 순서가 요소의 정렬 순서와 동일 할 때 (예 :을 사용한 후 ) 정렬 필요는 없습니다 . 정렬 된 컬렉션은 항상 암시 적으로 정렬됩니다 (즉, 항상 "첫 번째"요소가 있으며 더 작은 다른 요소를 추가하지 않는 한 항상 동일합니다).


5

정렬 된 컬렉션은 모든 요소가 삽입되는 연속 인덱스를 추적하는 컬렉션입니다.

정렬 된 컬렉션은 정렬 기준을 정의하는 방법을 제공하는 Comparable 인터페이스를 사용하는 동안 주문이 삽입 될 요소의 값에 추가로 의존 할 때 정렬 된 컬렉션입니다.

도움이 되길 바랍니다.


2

정렬은 Comparable 또는 Comparator의 구현에 따른 순서를 의미합니다. Ordered는 삽입 순서 또는 일관성 있고 정의 된 임의의 다른 순서의 순서를 따르고 있음을 의미합니다.

따라서 정렬 된 문자열 목록은 String.compareTo 메서드에 따라 정렬됩니다. 목록에는 임의의 순서로 삽입 된 문자열 목록이 포함될 수 있지만 순서는 항상 동일하게 유지됩니다.

물론 Collections 클래스에는 목록을 정렬하는 메소드가 있습니다.


1

정렬 된 컬렉션은 일반적으로 알고리즘이 작동하는 요소의 속성에 따라 요소가 최소값에서 최대 값으로 또는 그 반대로 정렬됨을 의미합니다.

interger 수집의 경우, 개인 수집의 경우 최소 수에서 최대 수까지 정렬 될 수 있으며, 사람의 키 또는 사람의 무게 등에 의해 파종 될 수 있습니다.

순서에 관해 말할 때, 그것은 일반적으로 삽입 순서를 의미합니다. 정렬 후 순서가 변경 될 수 있습니다


0

정렬 된 컬렉션 vs. 정렬 된 컬렉션

1. 소장품

정렬 된 콜렉션은 Java 콜렉션 프레임 워크에서 제공하는 정렬 기능을 사용하여 콜렉션을 정렬합니다. 정렬은 Java 비교기를 사용하여 데이터베이스에서 데이터를 읽은 후 Hibernate를 실행하는 JVM의 메모리에서 발생합니다.

컬렉션이 크지 않으면 더 효율적으로 정렬 할 수 있습니다. jvm 메모리에서 발생하면 메모리 부족 오류가 발생할 수 있습니다.

2. 주문 수집

주문 콜렉션은 검색시이 콜렉션을 정렬하기 위해 조회에서 order-by 절을 지정하여 콜렉션을 정렬합니다. 컬렉션이 매우 큰 경우 더 효율적으로 정렬 할 수 있습니다. 정렬 된 컬렉션에 비해 빠릅니다.

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