CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ LinkedHashSet
John Squirrels
سطح
San Francisco

جاوا ۾ LinkedHashSet

گروپ ۾ شايع ٿيل
جاوا ۾ LinkedHashSet ڪلاس جي ڳالهائيندي ، اسان کي ذڪر ڪرڻ جي ضرورت آهي ته اهو سيٽ انٽرفيس کي لاڳو ڪري ٿو. LinkedHashSet ھڪڙو مجموعو ٺاھي ٿو جيڪو عناصر کي ھيش ٽيبل ۾ ذخيرو ڪري ٿو پر ان جي HashSet هم منصب جي برعڪس عناصر جي اندراج جي ترتيب کي برقرار رکي ٿو.

جاوا ۾ ڇا مقرر ڪيو ويو آهي

اچو ته مختصر طور تي ياد رکون ته سيٽ انٽرفيس هڪ سيٽ (سيٽ) جي وضاحت ڪري ٿو. اهو مجموعو وڌائي ٿو ۽ مجموعن جي رويي کي بيان ڪري ٿو جيڪي نقلي عناصر کي اجازت نه ڏيندا آهن. اهڙيء طرح، add() طريقو غلط موٽائي ٿو جيڪڏهن هڪ ڪوشش ڪئي وئي ته هڪ نقل عنصر سيٽ ۾ شامل ڪرڻ لاء. انٽرفيس پنهنجي ڪنهن به اضافي طريقن جي وضاحت نٿو ڪري. سيٽ انٽرفيس ذخيرو ٿيل شين جي انفراديت جو خيال رکندو آهي، انفراديت برابر () طريقي جي عمل جي ذريعي طئي ڪيو ويندو آهي . تنهن ڪري، جيڪڏهن ٺهيل طبقي جون شيون سيٽ ۾ شامل ڪيون وينديون ، اهو ضروري آهي ته برابر () طريقي کي ختم ڪرڻ لاء.

LinkedHashSet ڪلاس

LinkedHashSet ڪلاس بابت ڳالهائڻ کان اڳ ، اسان کي ان جي ويجهي مائٽ، HashSet ڪلاس جو ذڪر ڪرڻ جي ضرورت آهي. HashSet سيٽ انٽرفيس کي لاڳو ڪري ٿو . اهو هڪ مجموعو ٺاهي ٿو جيڪو عناصر کي هش ٽيبل ۾ ذخيرو ڪري ٿو. هيش ٽيبل جي عناصر کي اهم-قدر جوڑوں طور محفوظ ڪيو ويو آهي. قيمت کي ذخيرو ڪرڻ لاء سيل (يا ڀاڱو) بيان ڪري ٿو. چاٻي جو مواد استعمال ڪيو ويندو آهي هڪ منفرد قدر جو تعين ڪرڻ لاءِ جنهن کي هيش ڪوڊ سڏيو ويندو آهي. اسان هڪ هيش ڪوڊ کي اعتراض جي سڃاڻپ ڪندڙ جي طور تي سمجهي سگهون ٿا، جيتوڻيڪ اهو منفرد ناهي. هي هيش ڪوڊ پڻ هڪ انڊيڪس جي طور تي ڪم ڪري ٿو جنهن ۾ ڪيئي سان لاڳاپيل ڊيٽا محفوظ ٿيل آهي. LinkedHashSet Java ڪلاس HashSet کي وڌائي ٿو بغير ڪنهن نئين طريقن کي شامل ڪرڻ . LinkedHashSet توهان کي جلدي داخل ٿيڻ جي موجودگي جي جانچ ڪرڻ جي اجازت ڏئي ٿو، جهڙوڪ HashSet ، پر اندر اندر هڪ ترتيب ڏنل فهرست شامل آهي. هن جو مطلب اهو آهي ته اهو عناصر جي داخل ٿيڻ جي ترتيب کي ذخيرو ڪري ٿو. ٻين لفظن ۾، LinkedHashSet سيٽ عناصر جي ھڪڙي ڳنڍيل لسٽ کي برقرار رکي ٿو ترتيب ۾ اھي داخل ڪيا ويا آھن. هي هڪ سيٽ ۾ داخل ٿيڻ جي ترتيب واري ترتيب جي اجازت ڏئي ٿو. پر اهو سبب بنائي ٿو LinkedHashSet ڪلاس کي HashSet طبقي کان وڌيڪ آپريشن ڪرڻ لاء .

LinkedHashSet جون اهم خاصيتون

  • اسان منفرد عناصر کي صرف LinkedHashSet ۾ ذخيرو ڪري سگھون ٿا

  • LinketHashSet اسان کي عناصر ڪڍڻ ڏيو ساڳئي ترتيب ۾ جيڪو اسان داخل ڪيو

  • LinkedHashSet هم وقت سازي نه ڪئي وئي آهي

  • LinkedHashSet null عناصر کي محفوظ ڪرڻ جي اجازت ڏئي ٿو

  • LinkedHashSet هيش ڪوڊ جي بنياد تي مخصوص انڊيڪس تي عناصر کي ذخيرو ڪرڻ لاء هيشنگ ٽيڪنڪ استعمال ڪندو آهي

LinkedHashSet طريقا

ان کان علاوه ان جي والدين طبقن مان ورثي ۾ مليل طريقن سان، HashSet هيٺين طريقن کي بيان ڪري ٿو:
  • boolean add(Object o) هن سيٽ ۾ مخصوص عنصر شامل ڪري ٿو جيڪڏهن اهو اڳ ۾ ئي موجود ناهي.

  • void clear() هن سيٽ مان سڀني عناصر کي هٽائي ٿو.

  • Object clone() هن LinkedHashSet مثال جي هڪ ٿلهي ڪاپي موٽائي ٿو: عناصر پاڻ کي ڪلون نه ڪيو ويو آهي.

  • boolean contains(Object o) صحيح موٽائي ٿو جيڪڏهن هي سيٽ مخصوص عنصر تي مشتمل آهي.

  • boolean isEmpty() واپسي صحيح آھي جيڪڏھن ھن سيٽ ۾ ڪو عنصر شامل نه آھي.

  • Iterator iterator() هن سيٽ جي عناصرن تي هڪ آئٽرٽر موٽائي ٿو.

  • boolean remove(Object o) هن سيٽ مان مخصوص عنصر کي هٽائي ٿو، جيڪڏهن موجود هجي.

  • int size() هن سيٽ ۾ عناصر جو تعداد واپس ڪري ٿو (ان جي عناصر جو تعداد).

Easy LinkedHashSet مثال هيٺ ڏنل مثال ۾ اسان ڏيکاريون ٿا LinkedHashSet اعتراض جي شروعات ۽ سيٽ ڀرڻ لاءِ add() طريقو استعمال ڪندي.
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);
       }
   }
پيداوار آهي:
[ري، ڪر، فا، سول، لا، ٽي، مي]
جئين توهان ڏسي سگهو ٿا، اسان جي سيٽ ۾ عناصر ساڳئي ترتيب ۾ ظاهر ٿيا جيڪي اسان انهن ۾ رکيا آهن. LinkedHashSet جاوا ۾ - 1

مثال 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);
       }
   }
پروگرام جو نتيجو هتي آهي:
[ري، ڪر، فا، سول، لا، ٽي، مي]
مثال ٻن جو نتيجو بلڪل ساڳيو آهي جيئن پهرين مثال ۾. اسان وٽ LinkedHashSet گڏ ڪرڻ ۾ ٻه ساڳيا عنصر نه هوندا . جڏهن اسان ٻئي کي رکڻ جي ڪوشش ڪندا آهيون، اهو صرف نظر انداز ڪيو ويندو آهي.

مثال 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);
       }
   }
پروگرام جو نتيجو هتي آهي:
[ري، ڪر، فا، سول، لا، ٽي، ايم] غلط اسان جي سيٽ کي پرنٽ ڪريو بغير عناصر کي هٽايو ويو: [ري، ڪر، سول، لا، ٽي، ايم] واضح حڪم کان پوء اسان جي سيٽ کي پرنٽ ڪريو: []
جئين توهان ڏسي سگهو ٿا، هٽايو () طريقو غير موجود عنصر تي لاڳو ڪيو ويو آهي پروگرام جي غلطي جو نتيجو ناهي. اهو صرف غلط موٽائي ٿو جيڪڏهن عنصر کي هٽايو نه ويو ۽ صحيح جيڪڏهن عنصر LinkedHashSet ۾ هو ۽ پوء هٽايو ويو.

LinkedHashSet بمقابلہ HashSet

اهي ٻئي طبقا ويجها مائٽ آهن. بهرحال اندر 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);
   }
}
پروگرام جو نتيجو آهي:
باقاعده هش سيٽ = [65536، 3، 5، 7، 9] ڳنڍيل هش سيٽ = [7، 3، 5، 65536، 9]

حقيقي دنيا جي ايپليڪيشنن ۾ 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);
   }
}
پروگرام جو نتيجو هتي آهي:
listWithDuplicates = [ڪجهه، عناصر، سان، ٿورا، نقل، هئا، هتي، نقل، نقل] listWithoutDuplicates = [ڪجهه، عناصر، سان، ٿورا، نقل، هئا، هتي] LinkedHashSet = [ڪجهه، عناصر، سان، ٿورا، نقل , were, here] regularHashSet = [هتي، ڪي، سان، نقل، هئا، عنصر، ٿورا]
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION