جاوا میں کیا سیٹ ہے۔
آئیے مختصراً یاد رکھیں کہ سیٹ انٹرفیس سیٹ (سیٹ) کی وضاحت کرتا ہے۔ یہ کلیکشن کو بڑھاتا ہے اور مجموعوں کے رویے کی وضاحت کرتا ہے جو ڈپلیکیٹ عناصر کی اجازت نہیں دیتے ہیں۔ اس طرح، اگر سیٹ میں ڈپلیکیٹ عنصر شامل کرنے کی کوشش کی جاتی ہے تو add() طریقہ غلط ثابت ہوتا ہے۔ انٹرفیس اپنے کسی اضافی طریقوں کی وضاحت نہیں کرتا ہے۔ سیٹ انٹرفیس ذخیرہ شدہ اشیاء کی انفرادیت کا خیال رکھتا ہے، انفرادیت کا تعین equals() طریقہ کے نفاذ سے ہوتا ہے ۔ لہذا، اگر تخلیق شدہ کلاس کی اشیاء کو Set میں شامل کیا جائے گا ، تو یہ ضروری ہے کہ equals() طریقہ کو اوور رائڈ کیا جائے۔لنکڈ ہیش سیٹ کلاس
LinkedHashSet کلاس کے بارے میں بات کرنے سے پہلے ، ہمیں اس کے قریبی رشتہ دار، HashSet کلاس کا ذکر کرنے کی ضرورت ہے۔ HashSet سیٹ انٹرفیس کو نافذ کرتا ہے ۔ یہ ایک مجموعہ بناتا ہے جو عناصر کو ہیش ٹیبل میں محفوظ کرتا ہے۔ ہیش ٹیبل کے عناصر کو کلیدی قدر کے جوڑے کے طور پر محفوظ کیا جاتا ہے۔ کلید قیمت کو ذخیرہ کرنے کے لیے سیل (یا طبقہ) کی وضاحت کرتی ہے۔ کلید کا مواد ایک منفرد قدر کا تعین کرنے کے لیے استعمال کیا جاتا ہے جسے ہیش کوڈ کہتے ہیں۔ ہم ایک ہیش کوڈ کو آبجیکٹ شناخت کنندہ کے طور پر سوچ سکتے ہیں، حالانکہ اس کا منفرد ہونا ضروری نہیں ہے۔ یہ ہیش کوڈ ایک انڈیکس کے طور پر بھی کام کرتا ہے جس میں کلید سے وابستہ ڈیٹا کو محفوظ کیا جاتا ہے۔ LinkedHashSet Java کلاس بغیر کوئی نیا طریقہ شامل کیے HashSet کو بڑھاتی ہے۔ LinkedHashSet آپ کو فوری طور پر اندراج کی موجودگی کی جانچ پڑتال کرنے کی اجازت دیتا ہے، بالکل HashSet کی طرح ، لیکن اندر ایک ترتیب شدہ فہرست پر مشتمل ہے۔ اس کا مطلب یہ ہے کہ یہ عناصر کے اندراج آرڈر کو محفوظ کرتا ہے۔ دوسرے الفاظ میں، LinkedHashSet سیٹ عناصر کی ایک منسلک فہرست کو اسی ترتیب میں برقرار رکھتا ہے جس ترتیب سے وہ داخل کیے گئے تھے۔ یہ ایک سیٹ میں اندراج کی ترتیب وار تکرار کی اجازت دیتا ہے۔ لیکن اس کی وجہ سے LinkedHashSet کلاس ہیش سیٹ کلاس سے زیادہ لمبا آپریشن کرتی ہے ۔LinkedHashSet کی اہم خصوصیات
-
ہم منفرد عناصر کو صرف LinkedHashSet میں محفوظ کر سکتے ہیں۔
-
LinketHashSet ہمیں عناصر کو اسی ترتیب سے نکالنے دیں جو ہم داخل کرتے ہیں۔
-
LinkedHashSet مطابقت پذیر نہیں ہے۔
-
LinkedHashSet کالعدم عناصر کو ذخیرہ کرنے کی اجازت دیتا ہے۔
-
LinkedHashSet ہیش کوڈ کی بنیاد پر ایک مخصوص انڈیکس میں عناصر کو ذخیرہ کرنے کے لیے ہیشنگ تکنیک کا استعمال کرتا ہے
لنکڈ ہیش سیٹ کے طریقے
اس کے والدین کی کلاسوں سے وراثت میں ملنے والے طریقوں کے علاوہ، HashSet مندرجہ ذیل طریقوں کی وضاحت کرتا ہے:-
boolean add(Object o) اس سیٹ میں مخصوص عنصر شامل کرتا ہے اگر یہ پہلے سے موجود نہیں ہے۔
-
void clear() اس سیٹ سے تمام عناصر کو ہٹا دیتا ہے۔
-
آبجیکٹ کلون () اس LinkedHashSet مثال کی ایک اتلی کاپی واپس کرتا ہے: عناصر خود کلون نہیں ہوتے ہیں۔
-
اگر یہ سیٹ مخصوص عنصر پر مشتمل ہو تو boolean contains(Object o) درست لوٹاتا ہے۔
-
boolean isEmpty() درست لوٹاتا ہے اگر اس سیٹ میں کوئی عنصر شامل نہ ہو۔
-
Iterator iterator() اس سیٹ کے عناصر پر ایک تکرار کرنے والا لوٹاتا ہے۔
-
boolean remove(Object o) اس سیٹ سے مخصوص عنصر کو ہٹاتا ہے، اگر موجود ہو۔
-
int size() اس سیٹ میں عناصر کی تعداد (اس کے عناصر کی تعداد) لوٹاتا ہے۔
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetEx1 {
public static void main(String[] args) {
//LinkedHashSet() Init
Set<String> set = new LinkedHashSet<>();
//adding elements to LinkedHashSet
set.add("Re"); //first added element
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");//last added element
System.out.println(set);
}
}
آؤٹ پٹ ہے:

مثال 2. LinkedHashSet میں ڈپلیکیٹ شامل کرنا
آئیے اپنے LinkedHashSet 7 عناصر کو میوزیکل اسکورز کے ناموں کے ساتھ دوبارہ ڈالیں اور ایک نیا عنصر ڈالیں جو پہلے رکھے گئے عناصر میں سے ایک جیسا ہے۔import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSetEx2 {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("Re");
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");
set.add("Sol");
System.out.println(set);
}
}
پروگرام کا آؤٹ پٹ یہاں ہے:
مثال 3. LinkedHashSet سے عناصر کو ہٹانا
import java.util.LinkedHashSet;
import java.util.Set;
public class LinkedHashSet3 {
public static void main(String[] args) {
Set<String> set = new LinkedHashSet<>();
set.add("Re");
set.add("Do");
set.add("Fa");
set.add("Sol");
set.add("La");
set.add("Ti");
set.add("Mi");
System.out.println(set);
set.remove("Fa");// removing an element from our set
set.remove("Score");//trying to remove element that isn't in set
System.out.println(set.remove("Score"));
System.out.println("Print our set without elements removed: ");
System.out.println(set);
set.clear();
System.out.println("Print out our set after clear command: ");
System.out.println(set);
}
}
پروگرام کا آؤٹ پٹ یہاں ہے:
لنکڈ ہیش سیٹ بمقابلہ ہیش سیٹ
یہ دونوں طبقے قریبی رشتہ دار ہیں۔ تاہم HashSet کے اندر یہ اشیاء کو ذخیرہ کرنے کے لیے HashMap استعمال کرتا ہے جبکہ LinkedHashSet LinkedHashMap استعمال کرتا ہے ۔ اگر آپ کو داخل کرنے کے آرڈر کو برقرار رکھنے کی ضرورت نہیں ہے لیکن آپ کو منفرد اشیاء کو ذخیرہ کرنے کی ضرورت ہے، تو استعمال کرنا زیادہ مناسب ہے HashSet ۔ اگر آپ کو عناصر کے اندراج آرڈر کو برقرار رکھنے کی ضرورت ہے تو LinkedHashSet آپ کی پسند ہے۔ LinkedHashSet کی کارکردگی HashSet کے مقابلے میں تھوڑی سست ہے کیونکہ LinkedHashSet عناصر کے اندراج کی ترتیب کو برقرار رکھنے کے لیے اندرونی LinkedList کا استعمال کرتا ہے۔ آئیے ایک مثال دیتے ہیں:import java.util.*;
public class LinkedHashSetExample1 {
public static void main(String[] args) {
// while regular hash set orders its elements according to its hashcode stamps
Set<Integer> regularHashSet = new HashSet<>();
regularHashSet.add(7);
regularHashSet.add(3);
regularHashSet.add(5);
regularHashSet.add(65536);
regularHashSet.add(9);
// few duplicates
regularHashSet.add(5);
regularHashSet.add(7);
// next will print:
// > regularHashSet = [65536, 3, 5, 7, 9]
System.out.println("regularHashSet = " + regularHashSet);
// linked hash set keeps order of adding unchanged
Set<Integer> linkedHashSet = new LinkedHashSet<>();
linkedHashSet.add(7);
linkedHashSet.add(3);
linkedHashSet.add(5);
linkedHashSet.add(65536);
linkedHashSet.add(9);
// few duplicates
linkedHashSet.add(5);
linkedHashSet.add(7);
// next will print:
// > linkedHashSet = [7, 3, 5, 65536, 9]
System.out.println("linkedHashSet = " + linkedHashSet);
}
}
پروگرام کا آؤٹ پٹ یہ ہے:
حقیقی دنیا کی ایپلی کیشنز میں Java LinkedHashSet کا استعمال
چونکہ LinkedHashSet آپ کو فوری طور پر اندراج کی موجودگی کی جانچ پڑتال کرنے اور آرڈر کو ذخیرہ کرنے کی اجازت دیتا ہے، اس لیے یہ مجموعہ فہرست سے ڈپلیکیٹس کو ختم کرنے کے لیے کافی آسان معلوم ہوتا ہے۔ یا، مثال کے طور پر، میرے بیگ میں حال ہی میں دیکھی گئی آخری چیز جیسے مسائل کو حل کرنا۔ یا، اس طرح کا کھیل یاد ہے، پوکیمون گو؟ LinkedHashSet پوکیمون کی ایک فہرست محفوظ کر سکتا ہے جس کا آپ نے سامنا کیا ہے اور وہ ترتیب جس میں وہ آپ کے راستے پر آئے تھے۔ اس صورت میں، "بار بار" پوکیمون کو مزید فہرست میں شامل نہیں کیا جائے گا۔ یا، مثال کے طور پر، لیول کے لحاظ سے مالکان کی فہرست جو آپ پہلے ہی کسی بھی گیم میں لیول کے ساتھ مل چکے ہیں۔ یا کائناتی اجسام کی دریافت کی تاریخ۔ LinkedHashSet آپ کو فوری طور پر چیک کرنے کی اجازت دیتا ہے کہ آیا اسپیس باڈی پہلے سے فہرست میں ہے یا نہیں، اور اگر وہ موجود نہیں ہے، تو اسے فہرست میں شامل کریں۔ آئیے ڈپلیکیٹس کو ختم کرنے کی ایک مثال لیتے ہیں۔import java.util.*;
class LinkedHashSetExample2 {
public static void main(String[] args) {
List<String> listWithDuplicates = List.of("some","elements","with", "few", "duplicates", "were", "here", "duplicates", "duplicates");
Set<String> linkedHashSet = new LinkedHashSet<>(listWithDuplicates);
List<String> listWithoutDuplicates = new ArrayList<>(linkedHashSet);
// next will print:
// > listWithDuplicates = [some, elements, with, few, duplicates, here, duplicates, duplicates]
System.out.println("listWithDuplicates = " + listWithDuplicates);
// next will print:
// > listWithoutDuplicates = [some, elements, with, few, duplicates, here]
System.out.println("listWithoutDuplicates = " + listWithoutDuplicates);
// -------------------------------------------------------------------------
// while using regular Hash Set will generally produces some unexpected order
Set<String> regularHashSet = new HashSet<>(listWithDuplicates);
// next will print:
// > linkedHashSet = [some, elements, with, few, duplicates, were, here]
System.out.println("linkedHashSet = " + linkedHashSet);
// next will print:
// > regularHashSet = [here, some, with, duplicates, were, elements, few]
System.out.println("regularHashSet = " + regularHashSet);
}
}
پروگرام کا آؤٹ پٹ یہاں ہے:
GO TO FULL VERSION