Java Set interfeysi, təkrarlanan elementləri olmayan sıralanmamış elementlər toplusudur. Set Interface javada riyazi Dəstin xüsusiyyətlərini təqdim edir. Bu təlimatda, Java dəsti metodlarına və istifadəsinə dair müxtəlif Java dəsti nümunələrini əhatə edəcəyik.
Mündəricat
Set interfeysinin xüsusiyyətləri
- Təkrarlanan dəyərlərə icazə vermədiyi mənasını verən unikal elementlərdən ibarətdir
- Java Set-in elementlərin saxlanmasında heç bir qaydası yoxdur
- Heç bir indeksə sahib deyil və bu səbəbdən mövqeyə görə hər hansı bir elementə daxil ola bilmərik.
- Bir interfeys olduğu üçün Set tətbiq siniflərindən hər hansı birini istifadə edərək tətbiq edə bilərik
- Kolleksiya interfeysini genişləndirir
Java Set və Java List arasındakı fərq
- Java Dəsti, sıralanmamış elementlər toplusudur siyahı elementlərin sifarişli bir toplusudur.
- Dəstin indeks əsaslı girişi yoxdur, ancaq Siyahıda elementlərə daxil ola biləcəyimiz bir indeks var.
- Dəstdə, təkrarlanan dəyərlər əlavə edə bilmərik, Siyahı isə təkrarlanan dəyərlər əlavə etməyə imkan verir.
Tətbiqi təyin edin
Etibarən Java Set bir interfeysdir, birbaşa bir obyekt yarada bilmirik. Bu səbəbdən HashSet, TreeSet, LinkedHashSet və ya EnumSet kimi siniflərdən birini tətbiq etməliyik. Hər bir set sinif aşağıda müzakirə edildiyi kimi fərqli bir şəkildə davranır:
- HashSet - Dəstdən keçərkən heç bir sıra və ya element ardıcıllığı yoxdur.
- TreeSet - Sıralama ilə yanaşı elementlərin sırasını qoruyur
- LinkedHashSet - Elementlərin sırasını yerləşdirmə ilə eyni şəkildə qoruyur
Java Məsələn Nümunə
Müəyyən edilmiş interfeysi tətbiq etmək üçün java.util idxal etməliyik. * Başqa paket fərdi sinif paketlərini ayrı-ayrı idxal edin.
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(); } }
Aşağıda göstərildiyi kimi ümumi dəstləri də yarada bilərik. Burada HashSet'i String növü və TreeSet'i Tamsayı növü olaraq təyin etdik. Beləliklə, bu obyektlər yalnız bu tip növlərin dəyərlərini qəbul edirlər.
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 metodları
Dəstə aşağıda göstərilən üsullarla yanaşı bütün Kolleksiya interfeysi metodları daxildir.
Üsul | təsvir | Parametr |
---|---|---|
boolean əlavə et (String e) | Zatən mövcud deyilsə, çoxluğa bir element əlavə edir. Element artıq dəstdə varsa və zəngə məhəl qoymazsa, false qaytarır | e - dəstə əlavə ediləcək element |
boolean addAll (Collectionc) | Təqdim etmədikdə kolleksiyadakı bütün elementləri dəstə əlavə edir | c - əlavə ediləcək elementlər toplusu |
boşluq təmiz () | Bütün elementləri dəstdən çıxarır və dəst boş olacaq | |
boolean tərkibində (Object o) var | Çoxluqda elementin olub-olmadığını yoxlayır və mövcud olduqda doğrudur | o - çoxluqda axtarılacaq element |
booleanAll (Collection c) | Kolleksiyanın dəstin bir alt qrupu olub olmadığını yoxlayır və mövcud olduqda doğrudur | c - elementlərin toplanması |
boolean bərabərdir (Object o) | Keçən obyekt ilə çoxluğun bərabərliyini yoxlayır. Hər ikisi də dəstdirsə və eyni elementləri və ölçünü ehtiva edərsə, doğrudur | o - müqayisə edilməsi lazım olan obyekt |
boolean isEmpty () | Çoxluğun boş olub olmadığını yoxlayır və boş olduqda doğru qayıdır | |
Təkrarlayıcı iterator () | Dəstdəki elementlər arasında gezinmek üçün bir iterator qaytarır | |
boolean çıxarın (Object o) | Müəyyən elementi çoxluqdan silər və element silinsə doğru qaytarar | o - çıxarılacaq element |
boolean removeAll (Collection c) | Varsa kolleksiyadakı bütün elementləri dəstdən silər | c - silinəcək elementlərin toplanması |
boolean retainAll (Kolleksiya c) | Yalnız kolleksiyadakı elementləri dəstdə saxlayır, yəni kolleksiyaya daxil olmayan bütün elementləri kənarlaşdırır | c - saxlanılacaq elementlərin toplanması |
int ölçüsü () | Dəstdəki elementlərin sayını qaytarır | |
SplitIterator bölücü () | Dəstdəki elementlər üzərində bölünmüş iterator yaradır | |
Obyekt [] toArray () | Dəstdəki bütün elementləri massivə çevirir | |
String toString () | Obyektin simli nümayəndəliyini qaytarır |
İstisnalar təyin edin
Java dəsti atır aşağıdakı istisnalar
- DəstəklənməyənOperationException
- NullPointerException
- ClassCastException
- Qeyri-qanuni sənəd
Bir dəstdən elementləri əlavə edin və silin
Aşağıdakı nümunədə əvvəlcə HashSet yaradırıq və 2 element əlavə edirik. Sonra başqa bir HashSet yaradırıq və daha 2 element əlavə edirik. Daha sonra ilk dəstə kolleksiya kimi əlavə olunur.
Məsələn çıxartmaq üçün əvvəlcə bir elementi 1-ci dəstdən çıxarırıq və sonra ikinci elementdən bütün elementləri çıxarırıq.
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 istifadə edərək elementləri çeşidləmək
Burada bir ədəd tam ədəd elan etdik və sonra elementləri loop formasını istifadə edərək HashSet-ə əlavə etdik. Çıxışda, "12" elementinin yinələnmə xüsusiyyətinin daxil edilmədiyini görə bilərsiniz. Aşağıdakı nümunədə göründüyü kimi TreeSet istifadə edərək HashSet elementlərini sıralaya bilərik.
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 Dəstini Array-a çevirin
Dəsti birə çevirə bilərik array aşağıda göstərildiyi kimi toArray metodunu istifadə edən elementlərin.
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
Set əməliyyatları nümunəsi Java proqramı (Birlik, kəsişmə və fərq)
Bu nümunədə 2 tamsayı dəsti yaratdıq. 2 dəstdən ibarət birliyi yerinə yetirmək üçün hər iki dəstdən bütün unikal elementləri əlavə edəcək addAll metodundan istifadə edirik. Kəsişmə üçün dəstlər arasında yalnız ümumi elementləri qorumaq üçün retainAll metodundan istifadə edirik. 2 dəst arasındakı fərqi tapmaq üçün set2-dəki bütün elementləri və set1-dəki ümumi elementləri siləcək olan RemoveAll metodundan istifadə edirik.
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]
nəticə
Bu təlimatda Java-da Set və müxtəlif manipulyasiyalar üçün setin yaradılması və istifadəsi haqqında məlumat əldə etdiniz.