هڪ سيٽ صرف منفرد شين جو مجموعو آهي. منفرد جو مطلب آهي ته ڪو به ٻه شيون ساڳيا قدر نه ٿي سگھي. سيٽ تي عمل درآمد تي منحصر ڪري سگھي ٿو يا نه ٿي سگھي. جاوا سيٽ، خلاصي ڊيٽا جي قسم (ADT) جي طور تي، ڪجھ اهم عمل آھن (جتي T ڪنھن ڊيٽا جي قسم جي نمائندگي ڪري ٿو مثال طور int، String، يا ڪنھن طبقي اعتراض):

boolean add(T item)
: واپسي صحيح آھي جيڪڏھن شيءِ ڪاميابيءَ سان سيٽ ۾ شامل ڪئي وئي آھي، ۽ غلط آھي جيڪڏھن شيءِ اڳ ۾ ئي سيٽ ۾ ھئي.boolean remove(T item)
: واپسي صحيح آھي جيڪڏھن شيون ڪاميابيءَ سان سيٽ مان ھٽايو ويو ۽ ٻي صورت ۾ غلط (جيڪڏھن شيءِ سيٽ ۾ نه ھئي).boolean contains(T item)
: واپسي صحيح آھي جيڪڏھن شيء سيٽ ۾ آھي ۽ ٻي صورت ۾ غلط.boolean isEmpty()
: واپسي صحيح آھي جيڪڏھن سيٽ خالي آھي ۽ ٻي صورت ۾ غلط آھي.
contains()
هن لاءِ وڏو رن ٽائم ڏئي ٿو: O(1) يا O(log n) وقت جي پيچيدگي ان تي منحصر آهي ته ڇا استعمال ٿيل عمل درآمد بالترتيب a HashSet
يا a آهي TreeSet
. پوء ڇا هڪ سيٽ لاء استعمال ٿي سگهي ٿو؟ خير، جيڪڏھن توھان کي ڪڏھن گھڻن مختلف شين جي ٽريڪ رکڻ جي ضرورت آھي- جھڙوڪ IDs، نالن، يا ٻيا منفرد سڃاڻپ ڪندڙ-- ۽ بار بار چيڪ ڪريو ته ڇا ڪا شئي اھڙي مجموعن ۾ موجود آھي، ته پوءِ ھڪڙو سيٽ ممڪن آھي سٺو انتخاب آھي. ھتي ھڪڙو مثال آھي ھڪڙي سيٽ جي استعمال جي صورت: تصور ڪريو ته توھان وٽ ھڪڙي فهرست آھي Student
ھڪڙي ڏنل ڪلاس ۾ سڀني شاگردن جي نمائندگي ڪندڙ شيون. ھر ھڪ Student
ٿي سگھي ٿو ھڪڙو منفرد نالو (string) ۽ گريڊ (int) ھن طبقي لاءِ. جيڪڏھن توھان چاھيو ٿا ته سڀني A شاگردن جي ھڪڙي فهرست (گريڊ >=90) بار بار حوالي ڪريو، ته پوءِ ھن لسٽ کي لوپ ڪرڻ ۽ ھر شاگرد جي گريڊ کي ھر دفعي چيڪ ڪرڻ مشڪل ھوندو. ان جي بدران، توھان استعمال ڪري سگھوٿا ھڪڙو HashSet
تار جو جيڪو ڪلاس ۾ سڀني A شاگردن جي ٽريڪ رکي ٿو، جيئن ته:
- هر دفعي شاگردن جا گريڊ اپڊيٽ ڪيا ويندا آهن، توهان آساني سان چيڪ ڪري سگهو ٿا ته شاگردن جو نئون گريڊ 90 کان وڏو يا برابر آهي يا نه.
- جيڪڏهن ائين آهي، انهن کي استعمال ڪندي A شاگردن جي سيٽ ۾ شامل ڪريو
add()
- جيڪڏهن اهي پهريان ئي هڪ شاگرد هئا، پوء هن آپريشن کي صرف نظر انداز ڪيو ويو آهي.
- جيڪڏهن نه، پوء انهن کي هٽايو اي شاگردن جي سيٽ مان استعمال ڪندي
remove()
- جيڪڏهن اهي هن نقطي تي هڪ شاگرد نه هئا، پوء هن آپريشن کي صرف نظر انداز ڪيو ويو آهي.
- جيڪڏهن ائين آهي، انهن کي استعمال ڪندي A شاگردن جي سيٽ ۾ شامل ڪريو
contains(“Johnny Appleseed”)
سيٽ تي ڪال ڪندي ائين ڪري سگهو ٿا. يقينن، هي صرف هڪ مثال آهي هڪ سيٽ لاءِ استعمال جي ڪيس جو، ۽ A شاگردن جي ٽريڪ رکڻ جو هي مخصوص مسئلو ٻين طريقن سان حل ٿي سگهي ٿو.
لاڳو ڪرڻ: HashSet جاوا ۽ جاوا TreeSet مثالن ۾
ٻئيHashSet
جاوا ۾ ۽ TreeSet
جاوا ۾ اچن ٿا java.utils package
. توھان انھن کي درآمد ڪري سگھو ٿا جيئن:
// imports everything from Java's util package, including HashSet and TreeSet
import java.util.*;
يا
import java.util.HashSet; // imports only the Java HashSet
import java.util.TreeSet; // imports only the Java TreeSet
جاوا HashSet
۽ جاوا جي وچ ۾ اهم فرق TreeSet
اهو آهي ته TreeSet
ترتيب ڏنل آهي، جڏهن ته HashSet
نه آهي. اهو ئي سبب آهي ته TreeSet
اهم عملن لاءِ O(log n) وقت جي پيچيدگي آهي، جڏهن ته HashSet
O(1) يا مسلسل وقت جي پيچيدگي آهي؛ TreeSet
هر وقت نظم برقرار رکڻ گهرجي . اڳ ذڪر ڪيل اهم سيٽ آپريشنن کان علاوه، جاوا HashSet
۽ TreeSet
جاوا ۾ ڪجھ ٻيا مددگار ڪم آهن:
void clear()
: سڀني شين جي سيٽ کي صاف ڪري ٿو.int size()
: سيٽ ۾ شيون جو تعداد موٽائي ٿو.Object clone()
: سيٽ جي هڪ ٿلهي ڪاپي موٽائي ٿو.Iterator iterator()
: پھرئين اعتراض کان شروع ٿيندڙ، سيٽ ڏانھن ھڪڙي ريٽرٽر کي واپس ڪري ٿو.
size()
جيڪڏھن توھان ڏسڻ چاھيو ته توھان وٽ ڪيترا 'A' شاگرد آھن، يا clear()
جيڪڏھن توھان سيمسٽر جي آخر ۾ لسٽ صاف ڪرڻ چاھيو ٿا. توھان استعمال ڪري سگھوٿا clone()
ھڪڙي شاگردن جي لسٽ جو ڪلون ٺاھيو ۽ رکڻ لاءِ ھڪ خاص وقت تي، جھڙوڪ مڊٽرم رپورٽن دوران (اھڙيءَ طرح ڪلون اصل سان گڏ تازو نه رھندو).
Java HashSet مثال
هتي جاوا ۾ استعمال ٿيندڙ sHashSet
جو هڪ مختصر مثال آهي:String
import java.util.HashSet;
class HashSetDemo {
public static void main(String[] args)
{
// create a HashSet of Strings
HashSet<String> hs = new HashSet<String>();
// Add elements using the add() method
hs.add("Collin");
hs.add("Bob");
hs.add("Abigail");
// Duplicates will ignored; this statement is useless
hs.add("Collin");
System.out.println(hs);
System.out.println("Bob is in the set (T/F): " + hs.contains("Bob"));
System.out.println("Max is in the set (T/F): " + hs.contains("Max"));
}
}
پيداوار: --------
[Collin, Bob, Abigail]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Java TreeSet مثال
جاوا سيٽ مثال توهان جي نظريي کي سمجهڻ ۾ مدد ڪري سگهي ٿي. هتي جاوا ۾ استعمال ٿيندڙ sTreeSet
جو مختصر مثال آهي :String
import java.util.TreeSet;
class TreeSetDemo {
public static void main(String[] args)
{
// create a TreeSet of Strings
TreeSet<String> ts = new TreeSet<String>();
// Add elements using the add() method.
ts.add("Collin");
ts.add("Bob");
ts.add("Abigail");
// Duplicates will ignored; this statement is useless
ts.add("Collin");
// printing the set prints the names in alphabetical order!
System.out.println(ts);
System.out.println("Bob is in the set (T/F): " + ts.contains("Bob"));
System.out.println("Max is in the set (T/F): " + ts.contains("Max"));
System.out.println("Size of the set: " + ts.size());
ts.clear();
System.out.println("Size of the set after clear(): " + ts.size());
}
}
پيداوار: -------
[Abigail, Bob, Collin]
Bob is in the set (T/F): true
Max is in the set (T/F): false
Size of the set: 3
Size of the set after clear(): 0
اهو ئي سڀ ڪجهه آهي! اميد ته هي مدد ڪئي 😊
GO TO FULL VERSION