ایک سیٹ صرف منفرد اشیاء کا مجموعہ ہے۔ منفرد کا مطلب ہے کہ کسی بھی دو اشیاء کی ایک جیسی قدر نہیں ہو سکتی۔ سیٹ کے نفاذ پر منحصر ہے، اس کا حکم دیا جا سکتا ہے یا نہیں۔ جاوا سیٹ، ایک خلاصہ ڈیٹا کی قسم (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
ایک منفرد نام (سٹرنگ) اور گریڈ (int) ہوسکتا ہے۔ اگر آپ تمام A طلباء (گریڈ >=90) کی فہرست کا بار بار حوالہ دینا چاہتے ہیں، تو اس فہرست کو تلاش کرنا اور ہر بار ہر طالب علم کے گریڈ کو چیک کرنا مشکل ہوگا۔ اس کے بجائے، آپ HashSet
سٹرنگز کا استعمال کر سکتے ہیں جو کلاس میں تمام A طلباء کو ٹریک کرتا ہے، جیسا کہ:
- جب بھی طلباء کے گریڈ اپ ڈیٹ ہوتے ہیں، آپ آسانی سے یہ جانچ سکتے ہیں کہ آیا طالب علم کا نیا گریڈ 90 سے بڑا ہے یا اس کے برابر ہے یا نہیں۔
- اگر ایسا ہے تو، انہیں استعمال کرنے والے طلباء کے A سیٹ میں شامل کریں۔
add()
- اگر وہ پہلے ہی A طالب علم تھے، تو اس آپریشن کو محض نظر انداز کر دیا جاتا ہے۔
- اگر نہیں، تو پھر انہیں A کا استعمال کرتے ہوئے طلباء کے سیٹ سے ہٹا دیں۔
remove()
- اگر وہ اس وقت A طالب علم نہیں تھے، تو اس آپریشن کو محض نظر انداز کر دیا جاتا ہے۔
- اگر ایسا ہے تو، انہیں استعمال کرنے والے طلباء کے A سیٹ میں شامل کریں۔
contains(“Johnny Appleseed”)
اگر آپ یہ دیکھنا چاہتے ہیں کہ آیا جانی ایپل سیڈ آپ کی کلاس میں اچھی کارکردگی کا مظاہرہ کر رہا ہے، تو آپ سیٹ پر کال کر کے آسانی سے ایسا کر سکتے ہیں ۔ بلاشبہ، یہ سیٹ کے لیے استعمال کے کیس کی صرف ایک مثال ہے، اور A طلباء پر نظر رکھنے کے اس مخصوص مسئلے کو دوسرے طریقوں سے حل کیا جا سکتا ہے۔
نفاذ: جاوا اور جاوا ٹری سیٹ کی مثالوں میں ہیش سیٹ
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()
کسی خاص وقت پر A طلباء کی فہرست کا کلون بنانے اور رکھنے کے لیے استعمال کر سکتے ہیں، جیسے کہ وسط مدتی رپورٹس کے دوران (اس طرح کلون اصل کے ساتھ ساتھ تازہ ترین نہیں رہتا ہے)۔
جاوا ہیش سیٹ کی مثال
جاوا میں استعمال ہونے والے 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
جاوا ٹری سیٹ کی مثال
جاوا سیٹ کی مثال آپ کو تھیوری کو سمجھنے میں مدد دے سکتی ہے۔ جاوا میں استعمال ہونے والے 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