수색…


값으로 HashSet 선언하기

HashSet으로부터 상속받은 새로운 클래스를 생성 할 수 있습니다 :

Set<String> h = new HashSet<String>() {{
    add("a");
    add("b");
}};

한 가지 해결책 :

Set<String> h = new HashSet<String>(Arrays.asList("a", "b"));

구아바 사용 :

Sets.newHashSet("a", "b", "c")

스트림 사용 :

Set<String> set3 = Stream.of("a", "b", "c").collect(toSet());

세트의 종류와 사용법

일반적으로 집합은 고유 한 값을 저장하는 컬렉션 유형입니다. 고유성은 equals()hashCode() 메서드에 의해 결정됩니다.

정렬은 집합의 유형에 따라 결정됩니다.

HashSet - 랜덤 정렬

Java SE 7
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

LinkedHashSet - 삽입 명령

Java SE 7
Set<String> set = new LinkedHashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Banana", "Apple", "Strawberry"]

TreeSet - compareTo() 또는 Comparator

Java SE 7
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Apple", "Banana", "Strawberry"]
Java SE 7
Set<String> set = new TreeSet<> ((string1, string2) -> string2.compareTo(string1));
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");

// Set Elements: ["Strawberry", "Banana", "Apple"]

초기화

집합은 중복 요소를 포함 할 수없는 컬렉션입니다. 그것은 수학 집합 추상화를 모델링합니다.

Set 에는 HashSet , TreeSet , LinkedHashSet 과 같은 다양한 클래스에서 구현이 있습니다.

예 :

HashSet :

Set<T> set = new HashSet<T>();

여기서 TString , Integer 또는 다른 객체 일 수 있습니다. HashSet 은 O (1)을 빠르게 검색 할 수는 있지만 추가 된 데이터는 정렬하지 않고 항목의 삽입 순서를 잃어 버립니다.

TreeSet :

그것은 O (lg (n))을 취하는 기본 연산에 대해 약간의 속도를 희생하는 정렬 된 방식으로 데이터를 저장합니다. 항목의 삽입 순서를 유지 관리하지 않습니다.

TreeSet<T> sortedSet = new TreeSet<T>();

LinkedHashSet :

HashSet 의 연결된 목록 구현입니다. 일단 추가 된 순서대로 항목을 반복 할 수 있습니다. 해당 내용에 대해서는 정렬이 제공되지 않습니다. O (1) 기본 작업이 제공되지만 백업 링크 목록을 유지 관리하는 데 HashSet 보다 비용이 많이 듭니다.

LinkedHashSet<T> linkedhashset = new LinkedHashSet<T>();

세트의 기본

세트 란 무엇입니까?

세트는 세트의 두 요소가 동일하지 않은 중요한 특성을 갖는 요소 세트를 포함하는 자료 구조입니다.

세트의 종류 :

  1. HashSet : 해시 테이블 (실제로는 HashMap 인스턴스)을 기본으로하는 세트입니다.
  2. 링크 된 HashSet : 예측 가능한 반복 순서를 사용하는 해시 테이블 및 링크 된 목록에 의해 지원되는 집합
  3. TreeSet : TreeMap에 근거를 둔 NavigableSet 구현입니다.

세트 만들기

Set<Integer> set = new HashSet<Integer>(); // Creates an empty Set of Integers

Set<Integer> linkedHashSet = new LinkedHashSet<Integer>(); //Creates a empty Set of Integers, with predictable iteration order

세트에 요소 추가하기

add() 메서드를 사용하여 요소를 집합에 추가 할 수 있습니다.

 set.add(12); //  - Adds element 12 to the set
 set.add(13); //  - Adds element 13 to the set

이 메소드를 실행 한 후 우리의 세트 :

set = [12,13]

세트의 모든 요소 삭제

set.clear();  //Removes all objects from the collection.

이 세트 후에 :

set = []

요소가 집합의 일부인지 확인합니다.

집합에있는 요소의 존재 여부는 contains() 메서드를 사용하여 확인할 수 있습니다.

set.contains(0);  //Returns true if a specified object is an element within the set.

출력 : False

세트가 비어 있는지 확인하십시오.

isEmpty() 메서드를 사용하여 Set가 비어 있는지 확인할 수 있습니다.

set.isEmpty();  //Returns true if the set has no elements

출력 : True

세트에서 요소 제거

 set.remove(0); // Removes first occurrence of a specified object from the collection

세트의 크기를 확인하십시오.

set.size(); //Returns the number of elements in the collection

출력 : 0

기존 세트에서 목록 만들기

새 목록 사용

List<String> list = new ArrayList<String>(listOfElements);

List.addAll () 메서드 사용

    Set<String> set = new HashSet<String>();
    set.add("foo");
    set.add("boo");
    
    List<String> list = new ArrayList<String>();
    list.addAll(set);

Java 8 Steam API 사용

List<String> list = set.stream().collect(Collectors.toList());

세트를 사용하여 중복 제거

컬렉션 elements 가 있다고 가정하고 동일한 요소를 포함하지만 모든 중복 요소가 제거 된 다른 컬렉션을 만들려는 경우

Collection<Type> noDuplicates = new HashSet<Type>(elements);

:

List<String> names = new ArrayList<>(
        Arrays.asList("John", "Marco", "Jenny", "Emily", "Jenny", "Emily", "John"));
Set<String> noDuplicates = new HashSet<>(names);
System.out.println("noDuplicates = " + noDuplicates);

출력 :

noDuplicates = [Marco, Emily, John, Jenny]


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow