programing

Java Set의 순서 유지?

sourcejob 2022. 12. 24. 17:42
반응형

Java Set의 순서 유지?

Java Set은 주문을 유지합니까?메서드가 세트를 반환하는 경우, 데이터가 정렬되어 있을 것으로 생각되지만, 세트에 걸쳐 반복되므로 데이터가 정렬되지 않습니다.이 문제를 해결할 더 좋은 방법이 있을까요?세트 이외의 것을 반환하려면 방법을 변경해야 합니까?

이 인터페이스에서는 주문 보증이 제공되지 않습니다.

서브 인터페이스는 특정 기준에 따라 정렬된 세트를 나타냅니다.Java 6에서는 2개의 표준 컨테이너가 구현되어 있습니다.SortedSet. 및 입니다.

에 덧붙여SortedSet인터페이스, 클래스도 있습니다.요소가 세트에 삽입된 순서를 기억하고 해당 순서대로 요소를 반환합니다.

Linked Hash Set이 필요합니다.

제안하신 많은 멤버가 Linked Hash Set을 사용하여 컬렉션 순서를 유지합니다.이 실장을 사용하여 세트를 포장할 수 있습니다.

정렬된 순서에는 SortedSet 구현을 사용할 수 있지만 사용자의 목적에는 LinkedHashSet을 사용합니다.

의사로부터도,

「이 실장에서는, TreeSet에 관련하는 코스트의 증가 없이, HashSet에 의해서 제공되는 불특정하고, 일반적으로 혼란스러운 순서로부터 클라이언트를 보호합니다.원본 세트의 구현에 관계없이 원본과 동일한 순서를 가진 세트의 복사본을 생성하는 데 사용할 수 있습니다."

출처 : http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html

세트는 단순한 인터페이스입니다.순서를 유지하려면 TreeSet 또는 LinkedHashSet 등의 해당 인터페이스와 서브 인터페이스 SortedSet의 특정 구현을 사용해야 합니다.세트를 다음과 같이 포장할 수 있습니다.

Set myOrderedSet = new LinkedHashSet(mySet);

주문 용도를 유지하다List또는LinkedHashSet.

다음은 표준의 주문 특성에 대한 간단한 요약입니다.SetJava에서 제공되는 구현:

  1. 삽입 순서 유지: LinkedHashSetCopyOnWriteArraySet(스레드 세이프)
  2. 세트 내에서 정렬된 항목을 유지합니다.TreeSet, EnumSet(enum 고유) 및 ConcurrentSkipListSet(스레드 세이프)
  3. 는 특정 순서로 항목을 보관하지 않습니다.HashSet(실행한 해시 세트)

구체적인 경우 먼저 항목을 정렬한 후 1 또는 2 중 하나를 사용할 수 있습니다(대부분).LinkedHashSet ★★★★★★★★★★★★★★★★★」TreeSet또는 보다 효율적으로 정렬되지 않은 데이터를 에 추가할 수도 있습니다.TreeSet이치노

LinkedHashSet은 모든 요소에 걸쳐 이중 링크된 목록을 유지하는 HashSet의 정렬된 버전입니다.반복 순서를 신경 쓸 때는 HashSet 대신 이 클래스를 사용합니다.

" " 。Set.iterator():

이 집합의 요소 위에 반복기를 반환합니다.요소는 특정 순서로 반환되지 않습니다(이 세트가 보증을 제공하는 일부 클래스의 인스턴스가 아닌 경우).

그리고 슈찬이 말했듯이TreeSet는 의 구현입니다.Set'CHANGE: 'CHANGE: 'CHANGE: 'CHANGE:

요소는 사용되는 생성자에 따라 자연 순서를 사용하거나 세트 작성 시 제공된 비교기에 의해 정렬됩니다.

보통 설정에서는 HashSet 등의 순서는 유지되지 않지만 Linked HashSet을 사용해 보면 입력한 순서는 유지됩니다.

두 가지가 있습니다.

  1. 요소를 세트로 정렬합니다.이를 위해 Sorted Set 및 이와 유사한 구현이 있습니다.
  2. 세트 내 삽입 순서를 유지합니다.Linked Hash Set 및 Copy On Write Array Set(스레드 세이프)을 사용할 수 있습니다.

Set 인터페이스 자체는 특정 순서를 규정하지 않습니다., SortedSet은 그렇게 합니다.

세트에 의해 반환된 반복기는 순서 있는 방법으로 데이터를 반환하지 않습니다.java.util을 참조하십시오.같은 컬렉션에 반복: 같은 순서로 요소를 반환해야 합니까?

만.SortedSet do can 、 can 、 can 、 can 、 can 、 can 、 can can can can can can can can can 。Set

언급URL : https://stackoverflow.com/questions/10752753/java-set-retain-order

반응형