تعد فئة HashSet جزءًا من Java Collections Framework، حيث توفر مجموعة سريعة وغير مرتبة ولا تسمح بالعناصر المكررة . إنه مبني على رأس HashMap، مما يعني أنه يرث نفس فوائد التعقيد الزمني ولكنه يركز بشكل كامل على تفرد العنصر. في هذه المقالة، سنستكشف كيفية عمل HashSet، وما الذي يجعلها فريدة من نوعها، ولماذا تختلف عن المجموعات الأخرى.
مجموعة التجزئة هي:
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); // Parameterized constructor using a collection Set setWithCollection = new HashSet(Arrays.asList(4, 4, 3)); // Default constructor with default capacity 16 Set set = new HashSet();
set.add(1); set.add(2); set.add(1); // Duplicate value is ignored System.out.println(set); // Output -> [1, 2]
إذا كنت بحاجة إلى استبدال القيم المكررة بدلاً من تجاهلها، فلن يكون HashSet هو الخيار الصحيح. وذلك لأنه يعطي الأولوية لـ تفرد العنصر.
// Parameterized constructor with initial capacity SetsetWithInitialCapacity = new HashSet(5); System.out.println(setWithInitialCapacity.size()); // Output -> 0
على الرغم من أن سعة setWithInitialCapacity هي 5، فإن size هي 0 لأن الحجم يعكس عدد العناصر الموجودة في المجموعة، وليس السعة الأولية. يمكنك التفكير في السعة باعتبارها مساحة تخزين داخلية، والتي يتم ضبطها عند إضافة العناصر.
// Parameterized constructor using a collection SetsetWithCollection = new HashSet(Arrays.asList(4, 4, 3)); System.out.println(setWithCollection); // Output -> [3, 4] or [4, 3]
إذا كنت بحاجة إلى الاحتفاظ بالعناصر المصنفة، ففكر في استخدام TreeSet، الذي يضمن ترتيب العناصر بترتيب ترتيب تصاعدي.
في المقابلات، السؤال الشائع هو ما إذا كان يمكنك استرداد فهرس لعنصر في HashSet. الجواب هو لا، لأن HashSet يستخدم آلية التجزئة لتخزين العناصر، وليس بنية قائمة على الفهرس مثل القائمة أو المصفوفة.
نظرًا لأن HashSet مدعوم بـ HashMap، فإنه يستخدم مفاتيح الخريطة لتخزين العناصر، بينما تكون القيم غير ذات صلة. ولهذا السبب يجب أن يكون كل عنصر في HashSet فريدًا، تمامًا مثل المفاتيح الموجودة في HashMap.
O(1) لمعظم العمليات، إلا أنه يفتقر إلى ميزات مثل الفرز والفهرسة. بالنسبة للمطورين، تساعد معرفة كيفية ارتباط HashSet بـ HashMap على فهم أعمالها الداخلية والاستفادة بشكل أفضل من إطار عمل المجموعات.
في المنشور التالي، سنستكشفسؤال شائع في المقابلة يتم طرحه بشكل متكرر في المقابلات لاختبار معرفة المرشحين بمفاهيم المجموعات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3