Пример набора Java  



Java Набор Java Набор

Интерфейс Java Set представляет собой неупорядоченный набор элементов, не содержащий повторяющихся элементов. Интерфейс набора предоставляет функции математического набора в java. В этом руководстве мы рассмотрим различные примеры наборов Java методов набора Java и их использование.

Особенности интерфейса Set  

  • Он содержит уникальные элементы, что означает, что он не допускает повторяющихся значений.
  • В Java Set нет порядка в хранении элементов.
  • У него нет индекса, и, следовательно, мы не можем получить доступ к каким-либо элементам в зависимости от позиции.
  • Поскольку это интерфейс, мы можем реализовать его, используя любой из классов реализации Set.
  • Расширяет интерфейс коллекции

Разница между Java Set и Java List  

  • Java Set - это неупорядоченный набор элементов, тогда как Список представляет собой упорядоченный набор элементов.
  • Set не имеет доступа на основе индекса, но у List есть индекс, с помощью которого мы можем получить доступ к элементам.
  • В Set мы не можем добавлять повторяющиеся значения, в то время как List позволяет добавлять повторяющиеся значения.

Установить реализацию  

С Java Set - это интерфейс, мы не можем создать объект напрямую. Следовательно, нам необходимо реализовать один из классов, таких как HashSet, TreeSet, LinkedHashSet или EnumSet. Каждый установленный класс ведет себя по-разному, как описано ниже:

  • HashSet - при перемещении по набору нет порядка или последовательности элементов.
  • TreeSet - сохраняет порядок элементов вместе с сортировкой
  • LinkedHashSet - сохраняет порядок элементов такой же, как при вставке.
Смотрите также
Класс сканера Java и импорт сканера Java

Установить Java

Пример набора Java  

Чтобы реализовать заданный интерфейс, нам нужно импортировать пакет java.util. *, Иначе импортировать отдельные пакеты классов отдельно.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set set1 = new HashSet();
    Set set2 = new TreeSet();
    Set set3 = new LinkedHashSet();

  }

}

Мы также можем создавать общие наборы, как показано ниже. Здесь мы указали HashSet как тип String и TreeSet как тип Integer. Следовательно, эти объекты принимают значения только этих конкретных типов.

import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {
    Set<String> setstring = new HashSet<String>();
    Set<Integer> setint = new TreeSet<Integer>();
  }
}

Методы Java Set  

Set включает в себя все методы интерфейса Collection, а также перечисленные ниже методы.

Способ доставкиОписаниеПараметр
логическое добавление (строка e)Добавляет элемент в набор, если он еще не существует. Он возвращает false, если элемент уже существует в наборе, и игнорирует вызовe - элемент, который будет добавлен в набор
логическое addAll (Collectionc)Добавляет все элементы коллекции в набор, если его нетc - коллекция добавляемых элементов
пусто ясно ()Удаляет все элементы из набора и набор будет пустым
логическое содержит (Объект o)Проверяет, содержит ли набор элемент, и возвращает true, если он присутствуетo - элемент для поиска в наборе
логическое значение containsAll (Коллекция c)Проверяет, является ли коллекция подмножеством набора и возвращает истину, если присутствуетc - набор элементов
логическое равно (объект o)Проверяет равенство набора переданным объектом. Он возвращает истину, если оба набора и содержат одинаковые элементы и размер.o - объект, который нужно сравнить
логическое isEmpty ()Проверяет, пуст ли набор или нет, и возвращает истину, если он пуст
Итератор итератор ()Возвращает итератор для навигации по элементам в наборе
логическое удаление (объект o)Удаляет конкретный элемент из набора и возвращает истину, если элемент удален.o - удаляемый элемент
логическое removeAll (Коллекция c)Удаляет все элементы в коллекции из набора, если они естьc - набор удаляемых элементов
логическое значение keepAll (Коллекция c)Сохраняет только элементы в коллекции в наборе, что означает, что он удаляет все другие элементы, которые не являются частью коллекцииc - набор элементов, которые нужно сохранить
размер int ()Возвращает количество элементов в наборе.
SplitIterator разделитель ()Создает разделенный итератор по элементам в наборе
Объект [] toArray ()Преобразует все элементы набора в массив
Строка toString ()Возвращает строковое представление объекта
Смотрите также
DataInputStream в Java

Установить исключения  

Набор Java бросает следующие исключения

  • UnsupportedOperationException
  • Исключение нулевого указателя
  • ClassCastException
  • IllegalArgumentException

Добавить и удалить элементы из набора  

В приведенном ниже примере мы сначала создаем HashSet и добавляем 2 элемента. Затем мы создаем еще один HashSet и добавляем еще 2 элемента. Затем он добавляется как коллекция к первому набору.

В примере удаления мы сначала удаляем элемент из первого набора, а затем удаляем все элементы из второго набора.

import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

  public static void main(String[] args) {

    Set<String> setstring = new HashSet<String>();
    setstring.add("Java");
    setstring.add("Javascript");
    System.out.println(setstring);
    
    Set<String> string2 = new HashSet<String>();
    string2.add("C");
    string2.add("C++");
    
    setstring.addAll(string2);
    System.out.println("Elements in set after addAll operation");
    System.out.println(setstring);
    
    setstring.remove("Javascript");
    System.out.println("Elements in the set after remove opertaion");
    System.out.println(setstring);
    
    setstring.removeAll(string2);
    System.out.println("Elements in the set after removeAll opertaion");
    System.out.println(setstring);
    
  }
  

}
Output:
[Java, Javascript]
Elements in set after addAll operation
[Java, C++, C, Javascript]
Elements in the set after remove opertaion
[Java, C++, C]
Elements in the set after removeAll opertaion
[Java]

Сортировка элементов с помощью TreeSet  

Здесь мы объявили массив целых чисел, а затем добавили элементы в HashSet, используя цикл for. В выходных данных вы можете видеть, что повторяющийся элемент «12» не включен, что является установленной функцией. Мы можем отсортировать элементы HashSet с помощью TreeSet, как показано в приведенном ниже примере.

import java.util.*;

public class SetSort {

  public static void main(String[] args) {
    Set<Integer> numbers = new HashSet<Integer>();
    int[] a = {34,78,12,67,45,23,12,89};
    for(int i=0;i<a.length;i++) {
      numbers.add(a[i]);
    }
    System.out.println("Elements in HashSet");
    System.out.println(numbers);
    
    Set<Integer> treeset = new TreeSet<Integer>(numbers);
    System.out.println("Elements in treeset after sort");
    System.out.println(treeset);
  }

}
Output:
Elements in HashSet
[34, 67, 23, 89, 12, 45, 78]
Elements in treeset after sort
[12, 23, 34, 45, 67, 78, 89]

Преобразовать набор Java в массив  

Мы можем преобразовать набор в массив элементов с помощью метода toArray, как описано ниже.

import java.util.*;

public class SetArray {

  public static void main(String[] args) {
    Set<String> names = new HashSet<String>();
    names.add("Roshan");
    names.add("Kiran");
    names.add("Tejas");
    names.add("Karthik");
    
    String[] strnames = names.toArray(new String[names.size()]);
    for(String strvalues: strnames) {
      System.out.println(strvalues);
    }

  }

}
Output:
Roshan
Kiran
Tejas
Karthik

Пример Java-программы операций с множеством (объединение, пересечение и разность)  

В этом примере мы создали 2 целочисленных набора. Чтобы выполнить объединение двух наборов, мы используем метод addAll, который добавит все уникальные элементы из обоих наборов. Для пересечения мы используем метод keepAll, чтобы сохранить только общие элементы между наборами. Чтобы найти разницу между двумя наборами, мы используем метод removeAll, который удалит все элементы в set2 вместе с общими элементами в set2.

import java.util.*;

public class SetOperations {

  public static void main(String[] args) {
    Set<Integer> set1 = new HashSet<Integer>();
    set1.add(3);
    set1.add(7);
    set1.add(5);
    set1.add(1);
    System.out.println("Set 1 : " + set1);
    
    Set<Integer> set2 = new HashSet<Integer>();
    set2.add(3);
    set2.add(4);
    set2.add(9);
    set2.add(5);
    
    System.out.println("Set 2 : " + set2);
    
    Set<Integer> a = new HashSet<Integer>(set1);
    a.addAll(set2);
    
    System.out.println("Union of Set 1 and Set 2 : " + a);
    
    Set<Integer> b = new HashSet<Integer>(set1);
    b.retainAll(set2);
    System.out.println("Intersection of Set 1 and Set 2 : " + b);
    
    Set<Integer> c = new HashSet<Integer>(set1);
    c.removeAll(set2);
    System.out.println("Difference between Set 1 and Set 2 : " + c);
  }

}
Output:
Set 1 : [1, 3, 5, 7]
Set 2 : [3, 4, 5, 9]
Union of Set 1 and Set 2 : [1, 3, 4, 5, 7, 9]
Intersection of set 1 and set 2 : [3, 5]
Difference between 2 sets : [1, 7]

Заключение  

В этом руководстве вы узнали о Set в Java и о том, как создавать и использовать набор для различных манипуляций.

Смотрите также
Перечисления в Java

Справка