set interface java
이 Java Set Tutorial은 Java의 Set Interface에 대한 모든 것을 설명합니다. Set, Set Methods, Implementation, Set to List 등을 반복하는 방법을 다룹니다.
Set in Java는 Java Collection Framework의 일부이며 Collection 인터페이스를 구현하는 인터페이스입니다. 집합 모음은 수학적 집합의 기능을 제공합니다.
집합은 정렬되지 않은 개체의 컬렉션으로 정의 될 수 있으며 중복 값을 포함 할 수 없습니다. set 인터페이스는 Collection 인터페이스를 상속하므로 Collection 인터페이스의 모든 메서드를 구현합니다.
=> 여기에서 완벽한 Java 교육 가이드를 확인하십시오.
학습 내용 :
자바 세트
설정된 인터페이스는 아래 다이어그램과 같이 클래스 및 인터페이스로 구현됩니다.
위의 다이어그램에서 볼 수 있듯이 Set 인터페이스는 클래스, HashSet, TreeSet, LinkedHashSet 및 EnumSet에 의해 상속됩니다. SortedSet 및 NavigableSet 인터페이스도 Set 인터페이스를 구현합니다.
Set 인터페이스의 중요한 특성 중 일부는 다음과 같습니다.
- set 인터페이스는 Java Collections Framework의 일부입니다.
- 설정된 인터페이스는 고유 한 값을 허용합니다.
- 최대 하나의 널값을 가질 수 있습니다.
- Java 8은 set 인터페이스에 대한 기본 메소드 인 Spliterator를 제공합니다.
- set 인터페이스는 요소의 인덱스를 지원하지 않습니다.
- set 인터페이스는 제네릭을 지원합니다.
세트를 만드는 방법?
Java의 set 인터페이스는 java.util 패키지의 일부입니다. 프로그램에 설정된 인터페이스를 포함하려면 다음 import 문 중 하나를 사용해야합니다.
import java.util.*;
또는
import java.util.Set;
일단 설정된 인터페이스 기능이 프로그램에 포함되면 아래와 같이 set 클래스 (set 인터페이스를 구현하는 클래스) 중 하나를 사용하여 Java로 집합을 만들 수 있습니다.
Set colors_Set = new HashSet();
그런 다음 add 메서드를 사용하여 몇 가지 요소를 추가하여이 집합 개체를 초기화 할 수 있습니다.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Java에서 예제 설정
Set 인터페이스를 보여주기 위해 Java로 간단한 예제를 구현해 보겠습니다.
import java.util.*; public class Main { public static void main(String() args) { // Set demo with HashSet Set Colors_Set = new HashSet(); Colors_Set.add('Red'); Colors_Set.add('Green'); Colors_Set.add('Blue'); Colors_Set.add('Cyan'); Colors_Set.add('Magenta'); //print set contents System.out.print('Set contents:'); System.out.println(Colors_Set); // Set demo with TreeSet System.out.print('
Sorted Set after converting to TreeSet:'); Set tree_Set = new TreeSet(Colors_Set); System.out.println(tree_Set); } }
산출:
세트 내용 : (Red, Cyan, Blue, Magenta, Green)
TreeSet으로 변환 후 정렬 된 세트 : (파란색, 청록색, 녹색, 자홍색, 빨간색)
Java에서 세트를 통해 반복
다양한 접근 방식을 사용하여 Set의 각 요소에 액세스 할 수 있습니다. 아래에서 이러한 접근 방식에 대해 설명합니다.
반복자 사용
집합 개체를 통과하는 반복기를 정의 할 수 있습니다. 이 반복기를 사용하여 Set의 각 요소에 액세스하고 처리 할 수 있습니다.
다음 Java 프로그램은 세트를 반복하는 방법을 보여주고 세트 요소를 인쇄합니다.
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); // Create an iterator for the cities_Set Iterator iter = cities_Set.iterator(); // print the set contents using iterator System.out.println('Values using Iterator: '); while (iter.hasNext()) { System.out.print(iter.next()+ ' '); } } }
산출:
HashSet : (방갈 루루, 푸네, 콜카타, 하이데라바드)
반복자를 사용하는 값 :
Bangalore Pune Kolkata 하이데라바드
For-each 루프 사용
for-each 루프를 사용하여 집합의 요소에 액세스 할 수도 있습니다. 여기서 우리는 루프의 세트를 반복합니다.
다음 프로그램이이를 보여줍니다.
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using forEach loop:'); // print the set contents using forEach loop for(String val : cities_Set) { System.out.print(val + ' '); } } }
산출:
HashSet : (방갈 루루, 푸네, 콜카타, 하이데라바드)
forEach 루프를 사용하여 내용을 설정합니다.
Bangalore Pune Kolkata 하이데라바드
Java 8 Stream API 사용
또한 Java 8 스트림 API를 사용하여 집합 요소를 반복하고 액세스 할 수 있습니다. 여기서는 집합에서 스트림을 생성 한 다음 forEach 루프를 사용하여 스트림을 반복합니다.
아래의 Java 프로그램은 Java 8 스트림 API를 사용하여 세트의 반복을 보여줍니다.
import java.util.*; import java.util.HashSet; import java.util.stream.*; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using Java 8 stream API:'); //generate a stream from set Stream stream = cities_Set.stream(); //iterate the stream using forEach loop to print the elements stream.forEach((element) -> { System.out.print(element + ' '); }); } }
산출:
HashSet : (방갈 루루, 푸네, 콜카타, 하이데라바드)
Java 8 스트림 API를 사용하여 콘텐츠 설정 :
Bangalore Pune Kolkata 하이데라바드
Set Methods API
다음은 Set 인터페이스에서 지원하는 메서드입니다. 이러한 메서드는 다른 작업과 함께 추가, 제거, 포함 등과 같은 기본 작업을 수행합니다.
비즈니스 분석가 인터뷰 질문 및 답변 ppt
방법 | 방법 프로토 타입 | 기술 |
---|---|---|
비었다 | 부울 isEmpty () | 세트가 비어 있는지 확인 |
더하다 | 부울 더하기 (E e) | 세트에없는 경우 요소 e를 세트에 추가합니다. |
addAll | 부울 addAll (콜렉션 c) | 컬렉션 c의 요소를 집합에 추가합니다. |
없애다 | 부울 제거 (Object o) | 세트에서 주어진 요소 o를 삭제합니다. |
모두 제거 | 부울 removeAll (콜렉션 c) | 집합에서 주어진 컬렉션 c에있는 요소를 제거합니다. |
포함 | 부울 포함 (Object o) | 주어진 요소 o가 세트에 있는지 확인합니다. 그렇다면 true를 반환합니다. |
containsAll | 부울 containsAll (콜렉션 c) | 집합에 지정된 컬렉션의 모든 요소가 포함되어 있는지 확인합니다. 그렇다면 true를 반환합니다. |
유지 | boolean preserveAll (콜렉션 c) | Set은 주어진 컬렉션의 모든 요소를 유지합니다. c |
맑은 | 무효 클리어 () | 세트에서 모든 요소를 삭제하여 세트를 지 웁니다. |
반복자 | 반복기 반복기 () | 세트의 반복자를 얻는 데 사용됩니다. |
toArray | Object () toArray () | 집합의 모든 요소를 포함하는 배열 표현으로 집합을 변환합니다. |
크기 | int 크기 () | 집합의 총 요소 수 또는 크기를 반환합니다. |
해시 코드 | 해시 코드 () | 세트의 hashCode를 반환합니다. |
이제 위에서 논의한 몇 가지 메소드를 Java 프로그램에서 구현해 보겠습니다. 두 세트를 포함하는 다음과 같은 특정 작업도 볼 수 있습니다.
Java에서 구현 설정
교차로 : 우리는 두 세트 사이의 공통 값을 유지합니다. 우리는 유지 방법.
노동 조합: 여기서 우리는 두 세트를 결합합니다. 이것은 addAll 방법.
차: 이 작업은 한 세트를 다른 세트에서 제거합니다. 이 작업은 모두 제거 방법.
import java.util.*; public class Main { public static void main(String args()) { //declare a set class (HashSet) Set numSet = new HashSet(); //add an element => add numSet.add(13); //add a list to the set using addAll method numSet.addAll(Arrays.asList(new Integer() {1,6,4,7,3,9,8,2,12,11,20})); //print the set System.out.println('Original Set (numSet):' + numSet); //size() System.out.println('
numSet Size:' + numSet.size()); //create a new set class and initialize it with list elements Set oddSet = new HashSet(); oddSet.addAll(Arrays.asList(new Integer() {1, 3, 7, 5, 9})); //print the set System.out.println('
OddSet contents:' + oddSet); //contains () System.out.println('
numSet contains element 2:' + numSet.contains(3)); //containsAll () System.out.println('
numSet contains collection oddset:' + numSet.containsAll(oddSet)); // retainAll () => intersection Set set_intersection = new HashSet(numSet); set_intersection.retainAll(oddSet); System.out.print('
Intersection of the numSet & oddSet:'); System.out.println(set_intersection); // removeAll () => difference Set set_difference = new HashSet(numSet); set_difference.removeAll(oddSet); System.out.print('Difference of the numSet & oddSet:'); System.out.println(set_difference); // addAll () => union Set set_union = new HashSet(numSet); set_union.addAll(oddSet); System.out.print('Union of the numSet & oddSet:'); System.out.println(set_union); } }
산출:
원본 세트 (numSet) : (1, 2, 3, 4, 20, 6, 7, 8, 9, 11, 12, 13)
numSet 크기 : 12
OddSet 내용 : (1, 3, 5, 7, 9)
numSet에 요소 2 : true 포함
numSet에는 컬렉션 oddset : false 포함
numSet 및 oddSet의 교차점 : (1, 3, 7, 9)
numSet 및 oddSet의 차이 : (2, 4, 6, 8, 11, 12, 13, 20)
numSet 및 oddSet의 합집합 : (1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 20)
배열로 설정
위의 메서드 섹션에서 'toArray'메서드를 보았습니다. 이 toArray 메서드는 집합을 Array로 변환하는 데 사용할 수 있습니다.
아래의 Java 프로그램은 Set을 Array로 변환합니다.
import java.util.*; public class Main { public static void main(String() args) { //declare a set class (HashSet) Set setOfColors= new HashSet(); // add data to HashSet setOfColors.add('Red'); setOfColors.add('Green'); setOfColors.add('Blue'); setOfColors.add('Cyan'); setOfColors.add('Magenta'); //print the set System.out.println('The set contents:' + setOfColors); //convert Set to Array using toArray () method String colors_Array() = setOfColors.toArray(new String(setOfColors.size())); //print the Array System.out.println('Set converted to Array:' + Arrays.toString(colors_Array)); } }
산출:
세트 내용 : (레드, 시안, 블루, 마젠타, 그린)
배열로 변환 된 세트 : (빨강, 청록, 파랑, 자홍, 녹색)
설정할 어레이
배열을 Java의 집합으로 변환하려면 아래와 같이 두 가지 접근 방식을 따를 수 있습니다.
배열 자바의 깊은 복사본을 만드는 방법
#1) asList 메서드를 사용하여 Array를 List로 변환 한 다음이 목록을 set 생성자에 인수로 전달할 수 있습니다. 이로 인해 배열 요소로 집합 개체가 생성됩니다.
#두) 또는 Collections.addAll 메서드를 사용하여 배열 요소를 집합 개체에 복사 할 수 있습니다.
아래의 Java 프로그램은 배열을 세트로 변환하는 두 가지 접근 방식을 모두 구현합니다.
import java.util.*; public class Main { public static void main(String() args) { //declare an array Integer() numArray = {10,50,40,20,60,30,80,70}; System.out.println('The input array:' + Arrays.toString(numArray)); //Approach 1: create a set class and provide array //converted to list as constructor arg Set numSet = new HashSet(Arrays.asList(numArray)); //print the set System.out.println('
Array converted to set through asList:' + numSet); //create another set Set intSet = new HashSet(); //Approach 2: use Collections.addAll method to copy array elements to the set Collections.addAll(intSet, numArray); //print the set System.out.println('
Array converted to set using Collections.addAll:' + intSet); } }
산출:
입력 배열 : (10, 50, 40, 20, 60, 30, 80, 70)
asList : (80, 50, 20, 70, 40, 10, 60, 30)을 통해 설정으로 변환 된 배열
Collections.addAll : (80, 50, 20, 70, 40, 10, 60, 30)을 사용하여 집합으로 변환 된 배열
목록으로 설정
Java에서 집합을 목록으로 변환하기 위해 목록 클래스의 'addAll'메소드를 사용할 수 있습니다. 이 메서드는 addAll 메서드를 호출하는 목록에 인수로 제공된 집합 또는 컬렉션의 내용을 복사합니다.
아래의 Java 프로그램은 집합을 ArrayList로 변환합니다.
import java.util.*; public class Main { public static void main(String() args) { //declare a set class and initialize it Set strSet= new HashSet(); strSet.add('one'); strSet.add('two'); strSet.add('three'); strSet.add('four'); strSet.add('five'); //print the set System.out.println('The set contents: ' + strSet); //declare an ArrayList List strList = new ArrayList(); //using addAll method,copy set elements to ArrayList strList.addAll(strSet); //print the ArrayList System.out.println('The ArrayList from set : ' + strList); } }
산출:
세트 내용 : (4, 1, 2, 3, 5)
집합의 ArrayList : (4, 1, 2, 3, 5)
설정할 목록
ArrayList와 같은 주어진 목록을 Java의 집합으로 변환하기 위해 목록 개체를 집합의 생성자에 대한 인수로 전달합니다.
다음 Java 프로그램은이 변환을 구현합니다.
import java.util.*; public class Main { public static void main(String() args) { //declare an ArrayList and initialize it List strList = new ArrayList(); strList.add('one'); strList.add('two'); strList.add('three'); strList.add('four'); strList.add('five'); //print the ArrayList System.out.println('The ArrayList: ' + strList); //declare a set class with ArrayList as argument to the constructor Set strSet= new HashSet(strList); //print the set System.out.println('The Set obtained from ArrayList: ' + strSet); } }
산출:
ArrayList : (하나, 둘, 셋, 넷, 다섯)
ArrayList에서 얻은 집합 : (4, 1, 2, 3, 5)
Java에서 집합 정렬
Java의 Set 컬렉션에는 직접적인 정렬 방법이 없습니다. 따라서 집합 개체의 내용을 정렬하거나 정렬하기 위해 간접적 인 접근 방식을 따라야합니다. 단, set 객체가 TreeSet 인 경우에는 예외가 있습니다.
기본적으로 TreeSet 개체는 정렬 된 집합을 제공합니다. 따라서 순서가 지정된 요소 집합에 관심이 있다면 TreeSet으로 이동해야합니다. 에 대한 HashSet 또는 LinkedHashSet 개체의 경우 집합을 List로 변환 할 수 있습니다. Collections.sort () 메서드를 사용하여 목록을 정렬 한 다음 목록을 다시 집합으로 변환합니다.
이 접근 방식은 아래 Java 프로그램에 나와 있습니다.
import java.util.Arrays; import java.util.Collections; import java.util.*; public class Main{ public static void main(String() args) { //Declare a set and initialize it with unsorted list HashSet evenNumSet = new LinkedHashSet( Arrays.asList(4,8,6,2,12,10,62,40,36) ); //print the unsorted set System.out.println('Unsorted Set: ' + evenNumSet); //convert set to list List numList = new ArrayList(evenNumSet); //Sort the list using Collections.sort () method Collections.sort(numList); //convert set to list evenNumSet = new LinkedHashSet(numList); //convert list to set //Print the sorted set System.out.println('Sorted Set:' + evenNumSet); } }
산출:
분류되지 않은 세트 : (4, 8, 6, 2, 12, 10, 62, 40, 36)
정렬 세트 : (2, 4, 6, 8, 10, 12, 36, 40, 62)
Java에서 설정된 목록 대
목록과 집합의 몇 가지 차이점을 살펴 보겠습니다.
명부 | 세트 |
---|---|
널 값이 허용됩니다. | 하나의 null 값만 허용됩니다. |
List 인터페이스를 구현합니다. | Set 인터페이스를 구현합니다. |
Legacy 클래스 인 Vector를 포함합니다. | 레거시 클래스가 없습니다. |
ArrayList, LinkedList는 목록 인터페이스 구현입니다. | HashSet, TreeSet, LinkedHashSet는 Set 구현입니다. |
순서가 지정된 요소 시퀀스입니다. | 고유 한 요소의 순서가 지정되지 않은 컬렉션입니다. |
중복을 허용합니다. | 중복은 허용되지 않습니다. |
요소의 위치에 따라 요소에 액세스 할 수 있습니다. | 위치 액세스가 없습니다. |
List 인터페이스에 정의 된 새로운 메서드. | Set 인터페이스에 정의 된 새 메서드가 없습니다. 컬렉션 인터페이스 메서드는 Set 서브 클래스와 함께 사용됩니다. |
ListIterator를 사용하여 순방향 및 역방향으로 순회 할 수 있습니다. | Iterator를 사용하여 순방향으로 만 순회 할 수 있습니다. |
자주 묻는 질문
Q # 1) Java에서 집합이란 무엇입니까?
대답: 집합은 고유 한 요소의 순서가 지정되지 않은 컬렉션이며 일반적으로 수학에서 집합의 개념을 모델링합니다.
Set는 Collection 인터페이스를 확장하는 인터페이스입니다. Collection 인터페이스에서 상속하는 메서드가 포함되어 있습니다. 설정된 인터페이스는 제한을 추가 할뿐입니다. 즉, 중복이 허용되지 않아야합니다.
질문 # 2)세트가 Java로 주문됩니까?
대답: 아니오. Java 세트는 주문되지 않습니다. 위치 액세스도 제공하지 않습니다.
질문 # 3)세트에 중복이 포함될 수 있습니까?
대답: 집합은 고유 한 요소의 모음이며 중복을 가질 수 없습니다.
질문 # 4)Java Set는 반복 가능합니까?
대답: 예. set 인터페이스는 Iterable 인터페이스를 구현하므로 forEach 루프를 사용하여 set을 순회하거나 반복 할 수 있습니다.
질문 # 5)세트에서 NULL이 허용됩니까?
대답: 집합은 null 값을 허용하지만 HashSet 및 LinkedHashSet과 같은 집합 구현에서는 최대 하나의 null 값이 허용됩니다. TreeSet의 경우 null이 지정되면 런타임 예외가 발생합니다.
결론
이 튜토리얼에서는 Java에서 인터페이스 설정과 관련된 일반적인 개념과 구현에 대해 논의했습니다.
set 인터페이스에는 새로운 메소드가 정의되어 있지 않지만 Collector 인터페이스의 메소드를 사용하고 중복 값을 금지하기위한 구현 만 추가합니다. 집합은 최대 하나의 null 값을 허용합니다.
이후 튜토리얼에서는 HashSet 및 TreeSet과 같은 Set 인터페이스의 특정 구현에 대해 설명합니다.
=> 처음부터 Java를 배우려면 여기를 방문하십시오.