Java Language
세트
수색…
값으로 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
- 랜덤 정렬
Set<String> set = new HashSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Strawberry", "Banana", "Apple"]
LinkedHashSet
- 삽입 명령
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
Set<String> set = new TreeSet<> ();
set.add("Banana");
set.add("Banana");
set.add("Apple");
set.add("Strawberry");
// Set Elements: ["Apple", "Banana", "Strawberry"]
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>();
여기서 T
는 String
, 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>();
세트의 기본
세트 란 무엇입니까?
세트는 세트의 두 요소가 동일하지 않은 중요한 특성을 갖는 요소 세트를 포함하는 자료 구조입니다.
세트의 종류 :
- HashSet : 해시 테이블 (실제로는 HashMap 인스턴스)을 기본으로하는 세트입니다.
- 링크 된 HashSet : 예측 가능한 반복 순서를 사용하는 해시 테이블 및 링크 된 목록에 의해 지원되는 집합
- 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]