Java에서 집합 정렬

Hiten Kanwar 2023년10월12일
  1. 목록을 사용하여 Java에서 정렬된 집합 표시
  2. TreeSet를 사용하여 Java에서 정렬된 세트 표시
  3. stream() 함수를 사용하여 Java에서 정렬된 집합 표시
Java에서 집합 정렬

Java에서 해시 테이블 요소는 해시 코드를 사용하여 액세스하므로 세트 또는 HashSet은 일반적으로 요소에 무작위로 액세스하는 데 사용됩니다. 해시 코드는 해시 테이블의 요소를 식별하는 데 도움이 되는 고유한 ID입니다.

HashSet은 정렬되지 않은 컬렉션입니다. Java의 집합에는 정렬 알고리즘의 필수 요구 사항인 임의 액세스 메서드(예: get(i), 여기서 i는 해당 요소의 인덱스)가 없습니다. 간단히 말해서 HashSet은 요소를 무작위로 배치하므로 정의되지 않은 순서로 인해 요소의 순서를 보장하지 않습니다.

따라서 Java에서 집합을 정렬하려면 상자에서 조금 벗어나 생각해야 합니다. 우리는 그것을 다른 구조로 변환하고 정렬하는 몇 가지 방법에 대해 논의할 것입니다.

목록을 사용하여 Java에서 정렬된 집합 표시

HashSet을 정렬하는 방법은 먼저 목록으로 변환한 다음 정렬하는 것입니다.

집합의 요소를 목록에 추가한 다음 sort() 함수를 사용하여 정렬합니다.

예를 들어,

import java.util.*;
public class example {
  public static void main(String[] args) {
    HashSet<Integer> number = new HashSet<>();

    // Using add() method
    number.add(3);
    number.add(6);
    number.add(4);

    // converting HashSet to arraylist
    ArrayList<Integer> al = new ArrayList<>(number);

    // sorting the list and then printing
    Collections.sort(al);
    System.out.println("Sorted list: ");
    for (int x : al) {
      System.out.print(x + " ");
    }
  }
}

출력:

Sorted list: 
3 4 6 

TreeSet를 사용하여 Java에서 정렬된 세트 표시

Collections 인터페이스의 TreeSet 클래스는 트리 데이터 구조의 기능을 제공합니다. 이 컬렉션을 반복할 때 HashSetTreeSet으로 변환할 수 있습니다. 요소는 잘 정의된 순서로 추출됩니다.

TreeSetSortedSet을 확장하는 NavigableSet 인터페이스를 구현하며, 이는 Set 인터페이스를 더욱 확장합니다.

다음 예를 참조하십시오.

import java.util.*;
public class example {
  public static void main(String[] args) {
    HashSet<Integer> number = new HashSet<>();

    // Using add() method
    number.add(3);
    number.add(6);
    number.add(4);

    // TreeSet gets the value of hashSet
    TreeSet myTreeSet = new TreeSet();
    myTreeSet.addAll(number);
    System.out.println(myTreeSet);
  }
}

출력:

[3, 4, 6]

stream() 함수를 사용하여 Java에서 정렬된 집합 표시

stream() 메소드를 사용하여 이 문제에 대한 간결한 방법이 있습니다. 스트림 API는 Java 8에서 도입되었으며 그 자체로 데이터 구조가 아닙니다. 그러나 다른 컬렉션에서 개체를 가져와 파이프라인 메서드에 따라 원하는 방식으로 표시할 수 있습니다.

이 예제에서는 sorted() 메서드를 사용하여 최종 시퀀스를 정렬된 방식으로 표시합니다.

아래 코드를 참조하십시오.

import java.util.*;
public class example {
  public static void main(String[] args) {
    // creating hashset hs
    HashSet<Integer> hs = new HashSet<>();

    // Using add() method to add elements to hs
    hs.add(20);
    hs.add(4);
    hs.add(15);

    // before sorting hs
    hs.forEach(System.out::println);
    System.out.println(); // extra line
    // after sorting hs
    hs.stream().sorted().forEach(System.out::println); // yes
  }
}

출력:

20
4
15

4
15
20

관련 문장 - Java Set