جاوا سيٽ ڇا آهي
سيٽ جاوا ڪليڪشن فريم ورڪ مان هڪ انٽرفيس آهي، پر سيٽ هڪ ترتيب ڏنل مجموعو ناهي، فهرست جي برعڪس . ان جو مطلب اهو آهي ته جاوا سيٽ عناصر رکيل آهن بغير ڪنهن خاص ترتيب جي. تنهنڪري پوزيشن تي ڪو به ڪنٽرول ناهي جتي توهان هڪ عنصر داخل ڪري سگهو ٿا. انهي سان گڏ توهان عناصر تائين رسائي نٿا ڪري سگهو انهن جي انڊيڪس ذريعي. رياضياتي طور، هڪ سيٽ منفرد عناصر جو مجموعو آهي. حقيقت ۾، هي هڪ غير ترتيب ٿيل مجموعو آهي (غير ترتيب ڏنل مجموعو)، جنهن ۾ هڪجهڙائي عناصر کي ذخيرو نٿو ڪري سگهجي. جيڪڏهن توهان ڄاڻي واڻي هڪ سيٽ ۾ هڪ نقلي عنصر شامل ڪيو ، اهو عمل نظر انداز ڪيو ويندو ۽ سيٽ تبديل نه ٿيندو. تنهن هوندي به ان ۾ هڪ null عنصر ذخيرو ڪرڻ جي اجازت آهي.لاڳو ڪرڻ مقرر ڪريو
جاوا سيٽ هڪ انٽرفيس آهي، تنهنڪري توهان کي شيون ٺاهڻ لاءِ ان جي عملن مان هڪ کي استعمال ڪرڻ جي ضرورت آهي. اهي آهن HashSet ، TreeSet ۽ LinkedHashSet . سيٽ s ۾ ، هر عنصر صرف هڪ مثال ۾ ذخيرو ٿيل آهي، ۽ سيٽ جي مختلف عملن کي عناصر کي محفوظ ڪرڻ لاء مختلف ترتيب استعمال ڪري ٿو. هڪ HashSet ۾ ، عناصر جو حڪم هڪ پيچيده الگورتھم طرفان طئي ڪيو ويندو آهي. جيڪڏهن اسٽوريج آرڊر توهان لاءِ اهم آهي، هڪ TreeSet ڪنٽينر استعمال ڪريو، جيڪو ذخيرو ڪري ٿو شين کي ترتيب ڏنل ترتيب سان مقابلي جي ترتيب ۾، يا هڪ LinkedHashSet ، جيڪو اضافي ترتيب ۾ عناصر کي ذخيرو ڪري ٿو. سيٽ اڪثر ڪري رڪنيت جي جاچ لاءِ استعمال ڪيا ويندا آهن ته جيئن توهان آساني سان چيڪ ڪري سگهو ته ڪو اعتراض ڏنل سيٽ سان تعلق رکي ٿو، تنهن ڪري عملي طور تي هڪ HashSet عمل درآمد جيڪو تيز ڏسڻ لاءِ بهتر ڪيو ويو آهي عام طور تي چونڊيو ويندو آهي. HashSet هڪ مجموعو آهي جيڪو استعمال ڪري ٿو انهن جي هيش قدرن کي واپس ڪيو hashCode() طريقي سان عناصر کي اندروني طور تي ذخيرو ڪرڻ لاءِ. اهو آهي، HashSet<E> جي اندر ، HashMap<E، Object> اعتراض ذخيرو ٿيل آهي، جيڪو HashSet جي قدرن کي ڪيز طور محفوظ ڪري ٿو. هيش ڪوڊ استعمال ڪرڻ توهان کي جلدي ڳولڻ، شامل ڪرڻ ۽ عناصر کي هٽائڻ جي اجازت ڏئي ٿو سيٽ . LinkedHashSet ھڪڙو HashSet آھي جيڪو ھڪڙي ڳنڍيل لسٽ ۾ عناصر کي ذخيرو ڪري ٿو. هڪ عام HashSet عنصر ترتيب برقرار نه رکندو آھي. پهرين، سرڪاري طور تي اهو صرف موجود ناهي، ۽ ٻيو، اندروني ترتيب پڻ ڊرامي طور تبديل ٿي سگهي ٿو جڏهن صرف هڪ عنصر شامل ڪيو وڃي. ۽ توهان LinkedHashSet مان هڪ آئٽرٽر حاصل ڪري سگهو ٿا ۽ ان کي استعمال ڪرڻ لاءِ استعمال ڪري سگهو ٿا سڀني عنصرن کي صحيح ترتيب ۾ جنهن ۾ اهي شامل ڪيا ويا آهن LinkedHashSet . اڪثر نه، پر ڪڏهن ڪڏهن اهو تمام ضروري ٿي سگهي ٿو. TreeSet ھڪڙو مجموعو آھي جيڪو عناصر کي قدر جي ترتيب واري وڻ جي طور تي ذخيرو ڪري ٿو. TreeSet جي اندر <E> ھڪڙو TreeMap<E، Object> آھي جيڪو انھن سڀني قدرن کي محفوظ ڪري ٿو. ۽ ھي TreeMap استعمال ڪري ٿو ھڪڙو ڳاڙھو-ڪارو متوازن بائنري وڻ عناصر کي ذخيرو ڪرڻ لاءِ. تنهن ڪري، اهو تمام تيز آهي add() , remove() , contains() آپريشن.هڪ سيٽ اعتراض ٺاهيو
هڪ سيٽ آبجیکٹ ٺاهڻ لاءِ توهان استعمال ڪري سگهو ٿا ايندڙ فارم مان هڪ:
Set<Integer> intSet = new HashSet<>();
Set<String> vSet = new HashSet<>();
Set mySet = new LinkedHashSet();
HashSet<String> myHashset = new HashSet<>();
ھتي ھڪڙو سادو مثال آھي، جتي اسان ٺاھيون ٿا 2 Set s، HashSet ۽ LinkedHashSet ، ۽ ھر ھڪڙي ۾ شامل ڪريو 5 عناصر لاءِ. اسان ان لاءِ add() طريقو استعمال ڪري سگھون ٿا.
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
public class HashSetTest {
public static void main(String[] args) {
Set mySet = new HashSet();
Set mySet2 = new LinkedHashSet();
//adding some string elements
mySet.add("Stuart");
mySet.add("Alex");
mySet.add("Johnny");
mySet.add("Igor");
mySet.add("Bel");
System.out.println(mySet);
mySet2.add("Stuart");
mySet2.add("Alex");
mySet2.add("Johnny");
mySet2.add("Igor");
mySet2.add("Bel");
System.out.println(mySet2);
}
}
هتي پروگرام جي پيداوار آهي:
جاوا سيٽ جا طريقا
هتي جاوا سيٽ جا ڪجهه اهم طريقا آهن:-
بوليان اضافو (اي اي) . مقرر ڪيل عنصر کي سيٽ ۾ شامل ڪري ٿو جيڪڏھن اھو اڳ ۾ ئي موجود نه آھي (اختياري آپريشن).
-
boolean هٽايو (Object o) . هن سيٽ مان مخصوص عنصر کي هٽائي ٿو جيڪڏهن اهو موجود آهي (اختياري آپريشن).
-
boolean removeAll (مجموعي c) . ھن سيٽ مان ھٽائي ٿو ان جا سڀئي عنصر جيڪي مخصوص ڪيل مجموعي ۾ شامل آھن (اختياري آپريشن).
-
boolean retainAll (مجموعي c) . هن سيٽ ۾ صرف انهن عناصر کي برقرار رکي ٿو جيڪي مخصوص مجموعي ۾ شامل آهن (اختياري آپريشن).
-
خالي خالي () . سيٽ مان سڀني عناصر کي هٽائي ٿو.
-
آئيٽرٽر آئٽرٽر () . هن سيٽ ۾ عناصرن تي هڪ آئٽرٽر واپس ڏئي ٿو.
-
int size() . اهو سيٽ ۾ عناصر جو تعداد حاصل ڪرڻ لاء استعمال ڪيو ويندو آهي.
-
boolean isEmpty() . چيڪ ڪرڻ لاءِ ته سيٽ خالي آهي يا نه.
-
boolean تي مشتمل آهي (Object o) . واپسي صحيح آھي جيڪڏھن ھن سيٽ ۾ مخصوص عنصر شامل آھي.
-
آئيٽرٽر آئٽرٽر () . هن سيٽ ۾ عناصرن تي هڪ آئٽرٽر واپس ڏئي ٿو. عناصر ڪنهن خاص ترتيب ۾ واپس نه ڪيا ويا آهن.
-
Object[] toArray() . هن سيٽ ۾ سڀني عنصرن تي مشتمل هڪ صف واپس ڪري ٿو. جيڪڏهن هي سيٽ ڪنهن به ضمانت ڏئي ٿو ته ان جي عناصر کي ان جي آئٽرٽر طرفان واپس ڪيو ويو آهي، اهو طريقو ساڳيو ئي عناصر کي واپس ڪرڻ گهرجي.
Java سيٽ ڪريو مکيه آپريشن جو مثال
هن مثال ۾، اسان تارن جو هڪ صف ٺاهيو ۽ پوءِ ان کي Arrays.asList آپريشن استعمال ڪندي mySet ڏانهن موڪليو . ان کان پوء اسان ڪجھ وڌيڪ عناصر کي هٽايو، ۽ ڪجھ وڌيڪ شامل ڪريو. انهي حالت ۾، سيٽ ۾ موجود عناصر مان هڪ اڳ ۾ ئي موجود آهي: اهو شامل نه ڪيو ويندو. اسان به ڪوشش ڪنداسين خالي جي چڪاس جي عملن کي isEmpty() ، مقرر ڪيل سائيز () جي ماپ جو تعين ڪرڻ ۽ سڀني عنصرن جي سيٽ کي صاف ڪرڻ clear() .
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class HashSetTest2 {
public static void main(String[] args) {
//creating a string Array with some names
String [] friends = {"Stuart", "Ivy", "Johnny", "Alex", "Igor", "Tanya"};
//creating a new set and adding elements from string array into it
Set<String> mySet = new HashSet<>(Arrays.asList(friends));
System.out.println(mySet);
//removing two elements from the set
mySet.remove("Igor");
mySet.remove("Stuart");
System.out.println(mySet);
//adding 2 new Elements into set
mySet.add("Dasha");
mySet.add("Alex"); //it's second Alex, can't be added
System.out.println(mySet);
//cheking the size of mySet
int size = mySet.size();
System.out.println("The quantity of set's elements = " + size);
//Checking if the set is empty
System.out.println("Is mySet empty? " + mySet.isEmpty());
//checking if some elements are in set
System.out.println("Is Igor in set? " + mySet.contains("Igor"));
System.out.println("Is Johnny in set? "+ mySet.contains("Johnny"));
//deleting all elements from the set
mySet.clear();
System.out.println("Is mySet empty now? " + mySet.isEmpty());
}
}
پروگرام جو نتيجو هتي آهي:
مثال LinkedHashSet سان ۽ سيٽ تي Array
اچو ته ٻيو پروگرام لکون. ان ۾، اسان LinkedHashSet جي بنياد تي هڪ سيٽ ٺاهينداسين ، ان ۾ عناصر شامل ڪندا، ۽ پوء سيٽ کي صف ۾ تبديل ڪندا.
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSet3 {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("C");
set.add("D");
set.add("E");
set.add("F");
set.add("G");
set.add("A");
set.add("B");
System.out.println(set);
set.remove("F");// removing an element from our set
set.remove("C sharp");//trying to remove element that isn't in set
System.out.println(set.remove("C sharp"));
System.out.println("Print our set with elements removed: ");
System.out.println(set);
//set to array
String strArray[] = set.toArray(new String[set.size()]);
System.out.println("New Array from set: ");
System.out.println(Arrays.toString(strArray));
System.out.println(strArray[0]);
}
}
هتي پروگرام جي پيداوار آهي:
Iterator سان مثال قائم ڪريو
اچو ته هڪ سيٽ ٺاهيو، پوءِ ان کي آئٽرٽر استعمال ڪندي پرنٽ ڪريون، ۽ پوءِ ان مان سڀ ايون نمبر هٽائي، پڻ هڪ ائٽريٽر استعمال ڪندي.
import java.util.*;
public class SetTest5
{
public static void main(String[] args)
{
Set<Integer> mySet = new HashSe<>();
for(int i = 0; i < 10; i++)
mySet.add(i);
Iterator iterator = mySet.iterator();
//simple iteration
while(iterator.hasNext()){
int i = (int) iterator.next();
}
System.out.println(" " + mySet);
//modification of mySet using iterator - removing all even numbers
iterator = mySet.iterator();
while(iterator.hasNext()){
int x = (int) iterator.next();
if(x%2 == 0) iterator.remove();
}
System.out.println(mySet);
}
}
پروگرام جو نتيجو هتي آهي:
TreeSet سان مثال
جيڪڏهن ترتيب ڏيڻ توهان لاء اهم آهي، پوء استعمال ڪريو TreeSet عمل درآمد. هن مختصر مثال ۾، اسان دوستن جي نالن سان سيٽ ڀرينداسين، جيئن اڳئين مثالن ۾. بهرحال، هڪ ترتيب ڏنل TreeSet ۾ ، عناصر کي فوري طور تي ترتيب ڏنل ترتيب ۾ لکيو ويندو. انهي صورت ۾، نالا الفابيٽ سان ڏيکاريا ويندا.
import java.util.Set;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
Set mySet = new TreeSet<>();
mySet.add("Stuart");
mySet.add("Alex");
mySet.add("Johnny");
mySet.add("Igor");
mySet.add("Bel");
System.out.println(mySet);
}
پيداوار آهي:
مختصر نتيجا
-
جاوا سيٽ انٽرفيس جاوا ڪليڪشن فريم ورڪ جو حصو آھي.
-
لاڳو ڪيل طبقن: AbstractSet , ConcurrentHashMap.KeySetView , ConcurrentSkipListSet , CopyOnWriteArraySet , EnumSet , HashSet , JobStateReasons , LinkedHashSet , TreeSet .
-
سڀ کان وڌيڪ مشهور سيٽ لاڳو ڪرڻ وارا آهن HashSet ، LinkedHashSet ۽ TreeSet .
-
HashSet عنصر آرڊر هڪ پيچيده الگورتھم طرفان طئي ڪيو ويو آهي. جيڪڏهن اسٽوريج آرڊر توهان لاءِ اهم آهي، هڪ TreeSet ڪنٽينر استعمال ڪريو، جيڪو ذخيرو ڪري ٿو شيون ترتيب ڏنل ترتيب سان مقابلي جي ترتيب ۾، يا هڪ LinkedHashSet ، جيڪو اضافي ترتيب ۾ عناصر کي ذخيرو ڪري ٿو.
-
گهڻو ڪري، سيٽ رڪنيت کي جانچڻ لاء استعمال ڪيو ويندو آهي. اهو آهي، چيڪ ڪرڻ لاء ته ڇا هڪ اعتراض رياضياتي معنى ۾ ڏنل سيٽ سان تعلق رکي ٿو. تنهن ڪري اڪثر گهڻو ڪري عملي طور تي سڀني سيٽ تي عمل درآمد، HashSet عام طور تي چونڊيو ويندو آهي. هن عمل کي تيز ڳولا لاءِ بهتر ڪيو ويو آهي.
-
توهان هڪ سيٽ ۾ نقلي عناصر شامل نٿا ڪري سگهو، تنهنڪري توهان منفرد عناصر کي ذخيرو ڪرڻ لاء سيٽ انٽرفيس جي عملن کي استعمال ڪري سگهو ٿا.
-
سيٽ توهان کي صرف هڪ null عنصر شامل ڪرڻ جي اجازت ڏئي ٿو.
-
سيٽ هڪ فهرست نه آهي ۽ ان جي عناصر جي انڊيڪس يا پوزيشن کي سپورٽ نٿو ڪري.
GO TO FULL VERSION