Прыклад Java Set  



ява Набор Java Усталёўка

Інтэрфейс Java Set - гэта неўпарадкаваная калекцыя элементаў, якія не ўтрымліваюць паўтаральных элементаў. Інтэрфейс набору забяспечвае магчымасці матэматычнага набору ў Java. У гэтым уроку мы разгледзім розныя прыклады набору Java і метады іх выкарыстання.

Асаблівасці інтэрфейсу Set  

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

Розніца паміж Java Set і Java List  

  • Java Set - гэта неўпарадкаваны набор элементаў, тады як спіс уяўляе сабой упарадкаваны збор элементаў.
  • Set не мае доступу на аснове індэкса, але List мае індэкс, з дапамогай якога мы можам атрымаць доступ да элементаў.
  • У "Наборы" мы не можам дадаваць дублікаты значэнняў, у той час як "Спіс" дазваляе дадаваць дублікаты.

Набор рэалізацыі  

З Набор Java - гэта інтэрфейс, мы не можам стварыць аб'ект непасрэдна. Такім чынам, нам трэба рэалізаваць адзін з класаў, такіх як HashSet, TreeSet, LinkedHashSet або EnumSet. Кожны набор класаў паводзіць сябе па-рознаму, як абмяркоўваецца ніжэй:

  • HashSet - няма парадку і паслядоўнасці элементаў падчас праходжання мноства.
  • TreeSet - Ён захоўвае парадак элементаў разам з сартаваннем
  • LinkedHashSet - Ён захоўвае парадак элементаў такі ж, як і ўстаўка
Глядзіце таксама
Сканер класа Java і імпартаваць сканер Java

Усталюйце Java

Прыклад Java Set  

Для таго, каб рэалізаваць усталяваны інтэрфейс, нам трэба імпартаваць пакет 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  

Набор уключае ў сябе ўсе метады інтэрфейсу калекцыі разам з вышэйзгаданымі метадамі.

МетадапісаннеПараметр
лагічнае даданне (радок e)Дадае элемент у набор, калі ён яшчэ не існуе. Ён вяртае false, калі элемент ужо існуе ў наборы, і ігнаруе выклікe - элемент, які трэба дадаць у набор
boolean addAll (Collectionc)Дадае ўсе элементы ў калекцыі ў набор, калі ён адсутнічаеc - калекцыя элементаў, якія трэба дадаць
пустата ясна ()Выдаляе ўсе элементы з набору, і набор будзе пустым
лагічны ўтрымлівае (аб'ект o)Правярае, ці ўтрымлівае набор элемент, і пры наяўнасці вяртае trueo - элемент для пошуку ў наборы
boolean containsAll (калекцыя c)Правярае, ці з'яўляецца калекцыя падмноствам набору, і вяртае true, калі яна ёсцьс - калекцыя элементаў
лагічнае роўна (аб'ект o)Правярае роўнасць набору з перададзеным аб'ектам. Ён вяртае true, калі абодва з'яўляюцца наборамі і ўтрымліваюць аднолькавыя элементы і памерo - аб'ект, які неабходна параўнаць
лагічны isEmpty ()Правярае, калі набор пусты ці не, і вяртае true, калі пусты
Ітэратар ітэратара ()Вяртае ітэратар для навігацыі па элементах набору
лагічнае выдаленне (аб'ект o)Выдаляе пэўны элемент з набору і вяртае true, калі элемент выдаленыo - элемент, які трэба выдаліць
boolean removeAll (Калекцыя c)Выдаляе з набору ўсе элементы ў калекцыі, калі яны ёсцьc - калекцыя элементаў, якія трэба выдаліць
boolean retainAll (Калекцыя c)Захоўвае толькі элементы ў калекцыі ў наборы, што азначае, што выдаляе ўсе астатнія элементы, якія не ўваходзяць у калекцыюc - калекцыя элементаў, якія трэба захаваць
памер int ()Вяртае колькасць элементаў у наборы
SplitIterator splititerator ()Стварае раздзелены ітэратар па элементах набору
Аб'ект [] toArray ()Пераўтварае ўсе элементы ў наборы ў масіў
Радок toString ()Вяртае радкавае прадстаўленне аб'екта
Глядзіце таксама
DataInputStream на Java

Усталёўваць выключэнні  

Наборы Java ніжэйпрынятыя выключэнні

  • UnsupportedOperationException
  • NullPointerException
  • ClassCastException
  • IllegalArgumentException

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

У прыведзеным ніжэй прыкладзе мы спачатку ствараем HashSet і дадаем 2 элементы. Затым мы ствараем яшчэ адзін HashSet і дадаем яшчэ 2 элементы. Затым гэта дадаецца ў якасці калекцыі ў першы набор.

У прыкладзе выдалення мы спачатку выдаляем элемент з 1-га набору, а потым выдаляем усе элементы з другога набору.

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 цэлыя наборы. Каб выканаць аб'яднанне 2 набораў, мы выкарыстоўваем метад addAll, які дадасць усе ўнікальныя элементы з абодвух набораў. Для перасячэння мы выкарыстоўваем метад retainAll, каб захаваць толькі агульныя элементы паміж наборамі. Каб знайсці розніцу паміж 2 наборамі, мы выкарыстоўваем метад removeAll, які выдаліць усе элементы ў наборы2 разам з агульнымі элементамі ў наборы1.

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

Спасылка