English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمات Java الأساسية

کنترل فرآیند جاوا

جاوا آرایه‌ها

جاوا مبتنی بر شیء (I)

جاوا مبتنی بر شیء (II)

جاوا مبتنی بر شیء (III)

معالجة الاستثنائات في Java

جاوا لیست (List)

جاوا کویه (Queue)

جاوا مجموعه Map

جاوا مجموعه Set

جاوا ورودی/خروجی (I/O)

جاوا خواننده/نویسنده

موضوعات دیگر جاوا

Java HashSet فئة

در این درس، ما کلاس HashSet جاوا را یاد خواهیم گرفت. ما با استفاده از مثال‌ها، روش‌های مختلف مجموعه هش و عملیات را یاد خواهیم گرفت.

کلاس HashSet از جعبه جمعیت‌های جاوا فریم‌ورک جمعیت‌های جاوا را برای عملکرد ساختار جدول هش ارائه می‌دهد.

این رابطرابط Set.

ایجاد یک مجموعه هش

برای ایجاد مجموعه هش، ابتدا باید پکیج java.util.HashSet را وارد کنید.

پس از وارد کردن پکیج، می‌توانید در جاوا مجموعه هش ایجاد کنید.

// HashSet با حجم 8 و عامل بار 0.75
HashSet<Integer> numbers = new HashSet<>(8, 0.75);

در اینجا، ما یک مجموعه هش به نام ایجاد کرده‌ایم.

توجه داشته باشید که بخش جدید HashSet<>(8, 0.75) ایجاد شده است. در اینجا، پارامتر اولحجم، و پارامتر دومعامل بار.

  • capacity - حجم این مجموعه هش 8 است. این بدان معناست که می‌تواند 8 عنصر را ذخیره کند.

  • loadFactor - عامل بار این مجموعه هش 0.6 است. این بدان معناست که هر زمان که مجموعه هش ما تا 60% پر شود، عناصر به یک مجموعه هش جدید منتقل می‌شوند که اندازه آن دو برابر اندازه مجموعه هش اولیه است.

مقدار پیش‌فرض و عامل بار

من الممكن إنشاء table hash دون تحديد سعته ومعدل الحمل. على سبيل المثال،

// HashSet يحتوي على سعة افتراضية وعامل الحمل
HashSet<Integer> numbers1 = new HashSet<>();

بالافتراض،

  • سعة مجموعة HashSet سيكون 16

  • عامل الحمل سيكون 0.75

methods من HashSet

يقدم class HashSet مجموعة من methods التي تمكننا من تنفيذ جميع الأنواع من العمليات على المجموعات.

إدراج العنصر في HashSet

  • add() - إدراج العنصر المحدد في المجموعة

  • addAll() - إدراج جميع العناصر من مجموعة محددة في المجموعة

例如,

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumber = new HashSet<>();
        // استخدام method add()
        evenNumber.add(2);
        evenNumber.add(4);
        evenNumber.add(6);
        System.out.println("HashSet: " + evenNumber);
        HashSet<Integer> numbers = new HashSet<>();
        
        // استخدام method addAll()
        numbers.addAll(evenNumber);
        numbers.add(5);
        System.out.println("New HashSet: " + numbers);
    }
}

نتائج الإخراج

HashSet: [2, 4, 6]
New HashSet: [2, 4, 5, 6]

زيارة عناصر HashSet

لزيارة عناصر مجموعة HashSet، يمكننا استخدام method iterator(). من أجل استخدام هذا method، يجب علينا استيراد package java.util.Iterator. على سبيل المثال،

import java.util.HashSet;
import java.util.Iterator;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        // استدعاء method iterator()
        Iterator<Integer> iterate = numbers.iterator();
        System.out.print("استخدام Iterator من HashSet: ");
        // زيارة العنصر
        while(iterate.hasNext()) {
            System.out.print(iterate.next());
            System.out.print(", ");
        }
    }
}

نتائج الإخراج

HashSet: [2, 5, 6]
استخدام HashSet باستخدام Iterator: 2, 5, 6,

إزالة العنصر

  • remove() - من إزالة العنصر المحدد من المجموعة

  • removeAll() - من إزالة جميع العناصر من المجموعة

例如,

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(2);
        numbers.add(5);
        numbers.add(6);
        System.out.println("HashSet: " + numbers);
        // استخدام طريقة remove()
        boolean value1 = numbers.remove(5);
        System.out.println("هل تم إزالة القيمة 5؟ " + value1);
        boolean value2 = numbers.removeAll(numbers);
        System.out.println("هل تم إزالة جميع العناصر؟ " + value2);
    }
}

نتائج الإخراج

HashSet: [2, 5, 6]
هل تم إزالة القيمة 5؟ true
هل تم إزالة جميع العناصر؟ true

طرق عمليات Set

يمكن استخدام طرق HashSet لتنفيذ جميع العمليات المختلفة على مجموعات Set.

الجمع للمجموعات من Set

لإجراء الجمع بين مجموعتين، يمكننا استخدام طريقة addAll(). على سبيل المثال،

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet1: " + evenNumbers);
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(3);
        System.out.println("HashSet2: " + numbers);
        // الجمع للمجموعات
        numbers.addAll(evenNumbers);
        System.out.println("الجمع: " + numbers);
    }
}

نتائج الإخراج

HashSet1: [2, 4]
HashSet2: [1, 3]
الجمع: [1, 2, 3, 4]

التكامل للمجموعات من Set

لإجراء التكامل بين مجموعتين، يمكننا استخدام طريقة retainAll(). على سبيل المثال،

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet1: " + primeNumbers)}
        HashSet<Integer> evenNumbers = new HashSet<>();
        evenNumbers.add(2);
        evenNumbers.add(4);
        System.out.println("HashSet2: " + evenNumbers);
        // التكامل للمجموعات
        evenNumbers.retainAll(primeNumbers);
        System.out.println("التكامل: " + evenNumbers);
    }
}

نتائج الإخراج

HashSet1: [2, 3]
HashSet2: [2, 4]
التكامل: [2]

الفرق بين مجموعتين من Set

لإيجاد الفرق بين مجموعتين، يمكننا استخدام طريقة removeAll(). على سبيل المثال،

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        primeNumbers.add(5);
        System.out.println("HashSet1: " + primeNumbers)}
        HashSet<Integer> oddNumbers = new HashSet<>();
        oddNumbers.add(1);
        oddNumbers.add(3);
        oddNumbers.add(5);
        System.out.println("HashSet2: " + oddNumbers);
        //الفرق بين HashSet1 و HashSet2
        primeNumbers.removeAll(oddNumbers);
        System.out.println("الفرق: " + primeNumbers);
    }
}

نتائج الإخراج

HashSet1: [2, 3, 5]
HashSet2: [1, 3, 5]
الفرق: [2]

مجموعات فرعية المجموعات

لتحقق من whether one collection is a subset of another, we can use the containsAll() method. For example,

import java.util.HashSet;
class Main {
    public static void main(String[] args) {
        HashSet<Integer> numbers = new HashSet<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        System.out.println("HashSet1: " + numbers);
        HashSet<Integer> primeNumbers = new HashSet<>();
        primeNumbers.add(2);
        primeNumbers.add(3);
        System.out.println("HashSet2: " + primeNumbers);
        //تحقق من whether primeNumbers هي مجموعة فرعية لـ numbers
        boolean result = numbers.containsAll(primeNumbers);
        System.out.println("هل HashSet2 هي مجموعة فرعية لـ HashSet1؟ " + result);
    }
}

نتائج الإخراج

HashSet1: [1, 2, 3, 4]
HashSet2: [2, 3]
هل HashSet2 هو مجموعة فرعية لHashSet1؟ true

طرق HashSet الأخرى

الطريقةوصف
clone()إنشاء نسخة من HashSet
contains()البحث عن العنصر المحدد في HashSet، وإرجاع النتيجة الصحيحة أو الخاطئة
isEmpty()تحقق مما إذا كان HashSet فارغاً
size()عدد HashSet
clear()إزالة جميع العناصر من HashSet

لماذا نختار HashSet؟

في Java، إذا كنا بحاجة إلى الوصول العشوائي إلى العناصر، فإننا نستخدمHashSet عادةً. لأن العناصر في جدول الهشاشة يتم الوصول إليها باستخدام hashcode.

hashcode هو تعريف فريد يساعد في تحديد العناصر في جدول هاشية.

HashSet لا يمكن أن يحتوي على عناصر مكررة. لذلك، لكل عنصر في مجموعة هاشية يوجد hashcode فريد.

ملاحظة: HashSet غير متزامن. أي أن إذا كان عدة متواليات تصل إلى مجموعة هاشية، وكانت إحدى المتواليات تعديل مجموعة هاشية. ثم، يجب عليها أن تكون متزامنة خارجياً.