set interface java
Този урок за набор от Java обяснява всичко за интерфейса за настройка в Java. Той обхваща начина на итерация чрез набор, методи за изпълнение, внедряване, задаване в списък и др .:
Set in Java е интерфейс, който е част от Java Collection Framework и реализира интерфейса Collection. Колекцията от комплекти предоставя характеристиките на математически набор.
Наборът може да бъде дефиниран като колекция от неподредени обекти и не може да съдържа дублирани стойности. Тъй като интерфейсът set наследява интерфейса Collection, той изпълнява всички методи на интерфейса Collection.
=> Вижте Перфектното ръководство за обучение по Java тук.
Какво ще научите:
Java Set
Зададеният интерфейс се изпълнява от класове и интерфейси, както е показано на диаграмата по-долу.
Както е показано в горната диаграма, интерфейсът Set се наследява от класове, HashSet, TreeSet, LinkedHashSet и EnumSet. Интерфейсите SortedSet и NavigableSet също реализират Set interface.
Някои от важните характеристики на интерфейса Set са дадени по-долу:
- Зададеният интерфейс е част от рамката на Java Collections.
- Зададеният интерфейс позволява уникални стойности.
- Може да има най-много една нулева стойност.
- 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-for Loop
Също така можем да използваме цикъла за всеки за достъп до елементите в набор. Тук прелистваме набора в цикъл.
Следващата програма демонстрира това.
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
Също така можем да итерираме и да осъществим достъп до елементи от набора, използвайки Java 8 stream API. В това, ние генерираме поток от набор и след това итерираме през потока, използвайки цикъла forEach.
Програмата за Java по-долу демонстрира повторение на набора с помощта на API 8 на 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 на Java 8 поток:
Бангалор Пуна Колката Хайдерабад
Задайте API на методи
По-долу са дадени методите, поддържани от интерфейса Set. Тези методи изпълняват основни операции като добавяне, премахване, съдържане и т.н., заедно с другите операции.
е мрежов ключ за сигурност, същият като парола
Метод | Прототип на метода | Описание |
---|---|---|
празно е | boolean isEmpty () | Проверява дали комплектът е празен |
добавете | булево добавяне (E e) | Добавя елемента e към набора, ако той не присъства в набора |
добави Всички | boolean addAll (Колекция c) | Добавя елемента от колекцията c към набора. |
Премахване | булево премахване (обект o) | Изтрива дадения елемент o от набора. |
премахнете всички | boolean removeAll (Колекция c) | Премахва елементите, налични в дадената колекция c от набора. |
съдържа | boolean съдържа (Обект o) | Проверява дали дадения елемент o присъства в комплекта. Връща вярно, ако да. |
съдържаВсички | boolean containsAll (Колекция c) | Проверява дали комплектът съдържа всички елементи в посочената колекция; Връща вярно, ако да. |
retainAll | boolean retainAll (Колекция c) | Set запазва всички елементи в дадената колекция c |
ясно | празно ясно () | Изчиства комплекта, като изтрива всички елементи от него |
итератор | Итератор на итератор () | Използва се за получаване на итератор за набора |
toArray | Обект () към масив () | Преобразува набора в представяне на масив, който съдържа всички елементи в набора. |
размер | размер int () | Връща общия брой елементи или размера на набора. |
хеш код | хеш код () | Връща hashCode на набора. |
Сега нека приложим някои от методите, които обсъдихме по-горе в Java програма. Ще видим и следните специфични операции, които включват два набора.
Задайте внедряване в Java
Пресичане: Ние запазваме общи стойности между двата набора. Извършваме пресичане с помощта на retainAll метод.
Съюз: Тук обединяваме двата комплекта. Това се прави с добави Всички метод.
Разлика: Тази операция премахва единия комплект от другия. Тази операция се извършва с помощта на премахнете всички метод.
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, ние предаваме списъчния обект като аргумент на конструктора на набора.
Следващата програма 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 обекти, можем да конвертираме набора в Списък. Сортирайте списъка с помощта на метода 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)
Списък Vs, зададен в Java
Нека обсъдим някои от разликите между списък и набор.
Списък | Комплект |
---|---|
Нулеви стойности са разрешени. | Допуска се само една нулева стойност. |
Внедрява списъчен интерфейс. | Реализира интерфейс Set. |
Съдържа Legacy клас, Vector. | Няма наследени класове. |
ArrayList, LinkedList е списък с реализации на интерфейса. | HashSet, TreeSet, LinkedHashSet са изпълнения на Set. |
Подредена последователност от елементи. | Неподредена колекция от различни елементи. |
Позволява дубликати. | Не се допускат дубликати. |
Възможност за достъп до елементи според позицията на елемента. | Няма позиционен достъп. |
Нови методи, дефинирани в списъчен интерфейс. | Няма определени методи в интерфейса Set. Методите за интерфейс за събиране трябва да се използват с подкласовете Set. |
Може да се придвижва в посока напред и назад с помощта на ListIterator. | Той може да се придвижва само в посока напред с Iterator. |
често задавани въпроси
В # 1) Какво е набор в Java?
Отговор: Наборът е неподредена колекция от уникални елементи и обикновено моделира концепцията за множеството в математиката.
Set е интерфейс, който разширява интерфейса за събиране. Той съдържа методите, които наследява от интерфейса на Collection. Зададеният интерфейс само добавя ограничение, т.е. не трябва да се допускат дублирания.
Q # 2)Поръчан ли е комплектът в Java?
Отговор: Не. Java Set не е поръчан. Той не осигурява и позиционен достъп.
Q # 3)Може ли набор да съдържа дубликати?
Отговор: Наборът е колекция от уникални елементи, той не може да има дубликати.
Q # 4)Наличен ли е Java Set?
Отговор: Да. Интерфейсът set реализира интерфейс Iterable и по този начин set може да бъде обходен или повторен с помощта на forEach цикъл.
Q # 5)Разрешено ли е NULL в комплекта?
Отговор: Наборът позволява нулева стойност, но най-много една нулева стойност е разрешена в изпълненията на набора като HashSet и LinkedHashSet. В случай на TreeSet, той хвърля изключение по време на изпълнение, ако е посочена null.
Заключение
В този урок обсъдихме общите концепции и изпълнение, свързани с Set interface в Java.
Зададеният интерфейс няма дефинирани нови методи, но използва методите на интерфейса на Collector и само добавя реализация за забрана на дублиращи се стойности. Комплектът позволява най-много една нулева стойност.
java 8 нови функции въпроси за интервю
В следващите ни уроци ще обсъдим конкретни изпълнения на интерфейса Set като HashSet и TreeSet.
=> Посетете тук, за да научите Java от нулата.
Препоръчително четене
- Урок за отражение на Java с примери
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Java String съдържа () Урок за метод с примери
- Назъбен масив в Java - урок с примери
- Урок за клас Java Scanner с примери
- Урок за дължина на масив Java с примери за кодове
- Java урок за низове | Низови методи на Java с примери
- Какво е Java Vector | Урок за Java Vector Class с примери