set interface java
Цей посібник із набору Java пояснює все про інтерфейс набору в Java. Він охоплює, як здійснювати ітерацію через набір, набір методів, реалізацію, набір до списку тощо:
Set in Java - це інтерфейс, який є частиною Java Collection Framework і реалізує інтерфейс Collection. Колекція наборів надає особливості математичного набору.
Набір можна визначити як колекцію невпорядкованих об’єктів, і він не може містити повторюваних значень. Оскільки інтерфейс set успадковує інтерфейс Collection, він реалізує всі методи інтерфейсу Collection.
=> Ознайомтесь з Ідеальним посібником з навчання Java тут.
Що ви дізнаєтесь:
Набір Java
Встановлений інтерфейс реалізований класами та інтерфейсами, як показано на діаграмі нижче.
Як показано на наведеній вище схемі, інтерфейс Set успадковується за класами, HashSet, TreeSet, LinkedHashSet та EnumSet. Інтерфейси SortedSet та NavigableSet також реалізують Set interface.
Деякі важливі характеристики інтерфейсу Set наведені нижче:
- Встановлений інтерфейс є частиною Java Collections Framework.
- Встановлений інтерфейс забезпечує унікальні значення.
- Він може мати щонайбільше одне нульове значення.
- Java 8 пропонує метод за замовчуванням для встановленого інтерфейсу - Spliterator.
- Встановлений інтерфейс не підтримує індекси елементів.
- Встановлений інтерфейс підтримує загальні засоби.
Як створити набір?
Встановлений інтерфейс у Java є частиною пакету java.util. Щоб включити заданий інтерфейс у програму, ми повинні використати одне з наступних тверджень імпорту.
import java.util.*;
або
import java.util.Set;
Після того, як функціональність інтерфейсу набору включена в програму, ми можемо створити набір на Java, використовуючи будь-який з класів набору (класи, що реалізують набір інтерфейсів), як показано нижче.
Set colors_Set = new HashSet();
Потім ми можемо ініціалізувати цей об’єкт набору, додавши до нього кілька елементів за допомогою методу add.
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”);
Наведіть приклад у Java
Давайте реалізуємо простий приклад на Java, щоб продемонструвати інтерфейс Set.
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); } }
Вихід:
Зміст набору: (Червоний, Блакитний, Синій, Пурпуровий, Зелений)
Сортований набір після перетворення в TreeSet: (Синій, Блакитний, Зелений, Пурпуровий, Червоний)
Ітерація через набір на Java
Ми можемо отримати доступ до кожного з елементів набору, використовуючи різні підходи. Ці підходи ми обговоримо нижче.
Використання Iterator
Ми можемо визначити ітератор для обходу заданого об’єкта. За допомогою цього ітератора ми можемо отримати доступ до кожного елемента набору та обробити його.
Наступна програма 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: (Бангалуру, Пуна, Колката, Хайдарабад)
Значення за допомогою Iterator:
Бангалор Пуна, Колката, Хайдерабад
Використання циклу 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:
Бангалор Пуна, Колката, Хайдерабад
Використання Java 8 Stream API
Ми також можемо здійснювати ітерацію та доступ до елементів набору за допомогою API 8 потоку Java. У цьому випадку ми генеруємо потік із набору, а потім перебираємо потік, використовуючи цикл forEach.
Наведена нижче програма Java демонструє ітерацію набору за допомогою API потоку Java 8.
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: (Бангалуру, Пуна, Колката, Хайдарабад)
Встановіть вміст за допомогою API 8 потоку Java:
Бангалор Пуна, Колката, Хайдерабад
Встановити API методів
Нижче наведено методи, підтримувані інтерфейсом Set. Ці методи виконують основні операції, такі як додавання, видалення, вміст тощо разом з іншими операціями.
програмне забезпечення для копіювання DVD на ПК
Метод | Метод-прототип | Опис |
---|---|---|
пусто | логічний isEmpty () | Перевіряє, чи набір порожній |
додати | логічне додавання (E e) | Додає елемент e до набору, якщо він відсутній у наборі |
addAll | boolean addAll (Колекція c) | Додає елемент колекції c до набору. |
видалити | логічне видалення (Об'єкт o) | Видаляє заданий елемент o із набору. |
видалити все | boolean removeAll (Колекція c) | Видаляє з набору елементи, присутні в даній колекції c. |
містить | boolean містить (Об'єкт o) | Перевіряє, чи присутній заданий елемент o у наборі. Повертає true, якщо так. |
містить усі | boolean containsAll (Колекція c) | Перевіряє, чи містить набір усі елементи у вказаній колекції; Повертає true, якщо так. |
retainAll | boolean retainAll (Колекція c) | Набір зберігає всі елементи даної колекції c |
ясно | void clear () | Очищає набір, видаляючи всі елементи з набору |
ітератор | Ітератор ітератора () | Використовується для отримання ітератора для набору |
toArray | Об'єкт () toArray () | Перетворює набір у подання масиву, що містить усі елементи набору. |
розмір | розмір int () | Повертає загальну кількість елементів або розмір набору. |
hashCode | hashCode () | Повертає hashCode набору. |
А тепер давайте реалізуємо деякі методи, про які ми говорили вище, у програмі Java. Ми також побачимо наступні конкретні операції, які включають два набори.
Встановити реалізацію в Java
Перетин: Ми зберігаємо спільні значення між двома наборами. Ми виконуємо перетин за допомогою retainAll метод.
Союз: Тут ми поєднуємо два набори. Це робиться за допомогою 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 можна використовувати для перетворення набору в масив.
Наведена нижче програма Java перетворює Set в масив.
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, а потім передати цей список як аргумент конструктору набору. В результаті об’єкт набору створюється з елементами масиву.
# два) Крім того, ми можемо використовувати метод 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); } }
Вихід:
Зміст набору: (чотири, один, два, три, п’ять)
Список масивів із набору: (чотири, один, два, три, п’ять)
Список для встановлення
Щоб перетворити даний список, такий як ArrayList, у набір на Java, ми передаємо об'єкт list як аргумент конструктору набору.
Наступна програма 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: (чотири, один, два, три, п’ять)
Сортувати набір на Java
Колекція Set у Java не має прямого методу сортування. Тому нам потрібно дотримуватися деяких непрямих підходів для сортування або упорядкування вмісту набору об’єктів. Однак є виняток у випадку, якщо встановленим об'єктом є TreeSet.
Об’єкт TreeSet за замовчуванням забезпечує упорядкований набір. Отже, якщо ми зацікавлені в упорядкованому наборі елементів, нам слід вибрати TreeSet. Для HashSet або LinkedHashSet, ми можемо перетворити набір у List. Відсортуйте Список за допомогою методу Collections.sort (), а потім перетворіть список назад у встановлений.
запитання та відповіді на коди для інтерв’ю в Java
Цей підхід показано в нижченаведеній програмі 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)
Список Vs встановлений на Java
Давайте обговоримо деякі відмінності між списком та набором.
Список | Встановити |
---|---|
Допускаються нульові значення. | Допускається лише одне нульове значення. |
Інтерфейс списку реалізацій. | Реалізує набір інтерфейсів. |
Містить застарілий клас, Вектор. | Немає старих класів. |
ArrayList, LinkedList - це реалізації інтерфейсу списку. | HashSet, TreeSet, LinkedHashSet - це реалізації набору. |
Впорядкована послідовність елементів. | Невпорядкована колекція різних елементів. |
Дозволяє дублікати. | Дублікати не допускаються. |
Можливий доступ до елементів відповідно до положення елемента. | Немає позиційного доступу. |
Нові методи, визначені в інтерфейсі List. | Жодних нових методів, визначених в інтерфейсі Set. Методи інтерфейсу колекції повинні використовуватися з підкласами Set. |
Можна переміщатись у напрямку вперед і назад за допомогою ListIterator. | Її можна пройти лише в прямому напрямку за допомогою Ітератора. |
Часті запитання
Q # 1) Що таке набір у Java?
Відповідь: Набір - це невпорядкована колекція унікальних елементів, яка зазвичай моделює поняття множини в математиці.
Set - це інтерфейс, який розширює інтерфейс Collection. Він містить методи, які він успадковує від інтерфейсу Collection. Встановлений інтерфейс додає лише обмеження, тобто не можна допускати копіювання.
Q # 2)Чи впорядкований набір на Java?
Відповідь: Ні. Набір Java не замовлено. Він також не забезпечує позиційний доступ.
Q # 3)Чи може набір містити дублікати?
Відповідь: Набір - це колекція унікальних елементів, він не може мати жодних дублікатів.
Q # 4)Чи можна встановити Java Set?
Відповідь: Так. Інтерфейс набору реалізує інтерфейс Iterable, і, таким чином, набір можна пройти або повторити за допомогою циклу forEach.
Q # 5)Чи дозволено NULL у наборі?
Відповідь: Набір допускає нульове значення, але не більше одного нульового значення допускається в таких реалізаціях набору, як HashSet та LinkedHashSet. У випадку TreeSet він видає виняток часу виконання, якщо вказано значення null.
Висновок
У цьому підручнику ми обговорили загальні концепції та реалізацію, пов'язані з інтерфейсом Set у Java.
Інтерфейс набору не має визначених нових методів, але він використовує методи інтерфейсу Collector і лише додає реалізацію, щоб заборонити повторювані значення. Набір допускає не більше одного нульового значення.
У наступних підручниках ми обговоримо конкретні реалізації інтерфейсу Set, такі як HashSet та TreeSet.
=> Завітайте сюди, щоб вивчити Java з нуля.
Рекомендована література
- Підручник з роздумів про Java з прикладами
- Підручник JAVA для початківців: 100+ практичних навчальних посібників Java
- Рядок Java містить () Підручник із методів із прикладами
- Нерівний масив у Java - Підручник із прикладами
- Підручник з класу сканера Java із прикладами
- Підручник з довжини масиву Java із прикладами коду
- Підручник із рядків Java | Рядові методи Java на прикладах
- Що таке Java Java | Підручник з Java-класу з прикладами