HashMap یکی از کارآمدترین ساختارهای داده است. داده های جفت کلید-مقدار خود را با استفاده از ساختار داده جاوا HashMap ذخیره کنید.
HashMap (یا HashTable) ساختار داده ای است که امکان دسترسی سریع به داده ها را با استفاده از جفت های کلید-مقدار فراهم می کند. کلاس Java HashMap کلاس AbstractMap را گسترش می دهد و رابط Map را پیاده سازی می کند که به آن امکان دسترسی به بسیاری از عملیات را می دهد. HashMaps دو نوع پارامتر دارد-K و V، که در آن K کلیدها و V مقادیر را در هر HashMap ذخیره می کند.
HashMap به شما امکان می دهد کلیدها را به یک مقدار خاص نگاشت کنید و موارد را به ترتیب تصادفی ذخیره کنید. در این مقاله، نحوه استفاده از کلاس HashMap جاوا برای ذخیره، بازیابی، به روز رسانی و حذف داده ها را خواهید آموخت.
ایجاد HashMap جاوا
کلاس Java HashMap دارای چهار سازنده است. سازنده پیش فرض محبوب ترین است، به شما امکان می دهد یک HashMap خالی ایجاد کنید که ظرفیت پیش فرض آن 16 باشد.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
//creating a HashMap
HashMap<Integer, String> fruitsMap = new HashMap<Integer, String>();
}
}
کلاس جاوا در بالا از سازنده پیش فرض HashMap برای ایجاد ساختار داده ای به نام fruitsMap استفاده می کند. شی fruitsMap داده هایی را ذخیره می کند که دارای یک کلید عدد صحیح و یک مقدار رشته هستند. با این حال، از آنجایی که کلاس HashMap رابط Map را پیاده سازی می کند، می تواند یک مقدار null را در فیلد کلید، فیلد مقدار یا هر دو ذخیره کند.
ذخیره داده ها در HashMap
شما می توانید چندین عملیات را با استفاده از کلاس HashMap انجام دهید. روش put(K key, V value) یکی از محبوبترین روشهای آن است و به شما امکان میدهد دادهها را با استفاده از یک جفت کلید-مقدار ذخیره کنید، جایی که هر کلید به یک مقدار نگاشت میشود.
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
//creating a HashMap
HashMap<Integer, String> fruitsMap = new HashMap<Integer, String>();
//add items to HashMap
fruitsMap.put(3,"Pear");
fruitsMap.put(6,"Mango");
fruitsMap.put(7,"Plum");
fruitsMap.put(4,"Apple");
fruitsMap.put(1,"Orange");
fruitsMap.put(5,"Berries");
fruitsMap.put(2,"Melon");
}
}
کلاس به روز شده بالا از متد put() برای اضافه کردن چندین میوه و کلید آنها به ساختار داده موجود fruitsMap استفاده می کند. توجه به این نکته ضروری است که کد بالا داده ها را به صورت تصادفی به نقشه اضافه می کند. این جزئیات زمانی مفید خواهد بود که شما شروع به خواندن داده ها از HashMap کنید.
خواندن داده ها از HashMap
روش های مختلفی برای خواندن داده ها از HashMap وجود دارد. روشی که استفاده میکنید به نحوه ظاهری دادهها یا حتی نوع دادهای که میخواهید بازیابی کنید بستگی دارد.
شی HashMap را بازیابی کنید
اگر می خواهید داده ها را به عنوان یک شی بازیابی کنید، می توانید به سادگی به شی HashMap که در مثال زیر fruitsMap است دسترسی پیدا کنید.
//View all the items as an object
System.out.println(fruitsMap);
با افزودن خط کد بالا به کلاس Main، خروجی زیر را در کنسول چاپ می کند:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 5=Berries, 6=Mango, 7=Plum}
اگرچه هر مقدار به طور تصادفی به HashMap اضافه شده است، از خروجی مشاهده خواهید کرد که HashMap مقادیر را بر اساس کلید اختصاص داده شده به هر مقدار به ترتیب صعودی ذخیره می کند. این یک ویژگی است که HashMaps را از سایر ساختارهای داده مانند ساختار داده Array که فقط از ذخیره سازی خطی پشتیبانی می کنند، جلوتر می دهد.
همه داده ها را به صورت جداگانه بازیابی کنید
اگر میخواهید همه دادهها را به صورت جداگانه بازیابی کنید، میتوانید از روش for استفاده کنید که به شما امکان میدهد از HashMap عبور کنید و هر مقدار و کلید مربوط به آن را چاپ کنید. این متد از رابط Map که کلاس HashMap پیاده سازی می کند، استفاده می کند.
//view all items with an iterator
for (HashMap.Entry<Integer, String> fruit : fruitsMap.entrySet())
{
System.out.println("Key: " + fruit.getKey() + " Value: " + fruit.getValue());
}
با افزودن روش بالا به کد، خروجی زیر در کنسول شما چاپ می شود:
Key: 1 Value: Orange
Key: 2 Value: Melon
Key: 3 Value: Pear
Key: 4 Value: Apple
Key: 5 Value: Berries
Key: 6 Value: Mango
Key: 7 Value: Plum
یک مقدار خاص را بازیابی کنید
کلاس HashMap یک متد get() دارد که یک کلید می گیرد و مقدار نگاشت شده به این کلید را برمی گرداند.
//fetch a single item
System.out.println(fruitsMap.get(4));
خط کد بالا خروجی زیر را در کنسول چاپ می کند:
Apple
به روز رسانی داده ها در HashMap
پس از ایجاد و پر کردن یک شی HashMap، می توانید از متد ()replace برای به روز رسانی هر آیتم در نقشه استفاده کنید. متد ()replace دو یا سه آرگومان می گیرد. اولین متد ()replace کلید مرتبط با یک آیتم موجود را به همراه مقدار جدیدی که میخواهید به آن نگاشت کنید، میگیرد.
// replace a single item
fruitsMap.replace(4, "Grapes");
System.out.print(fruitsMap);
با اجرای کد بالا، شیء زیر در کنسول چاپ می شود:
{1=Orange, 2=Melon, 3=Pear, 4=Grapes, 5=Berries, 6=Mango, 7=Plum}
همانطور که از شی بالا می بینید، “Grapes” به 4 نگاشت می شود که قبلا به “Apple” نگاشت شده بود.
متد جایگزین() دوم کلید مرتبط با آیتم موجود، آیتم موجود و مقدار جایگزین را می گیرد.
// replace a single item
fruitsMap.replace(4, "Apple", "Grapes");
System.out.print(fruitsMap);
کد بالا شی زیر را در کنسول چاپ می کند:
{1=Orange, 2=Melon, 3=Pear, 4=Grapes, 5=Berries, 6=Mango, 7=Plum}
حذف داده ها از HashMap
شما می توانید یک آیتم خاص را با استفاده از روش remove() از HashMap خود حذف کنید یا با استفاده از متد clear() تمام داده ها را حذف کنید. متد remove() یک یا دو آرگومان می گیرد. روش حذف اول، کلید مرتبط با مقداری را که میخواهید حذف کنید، میگیرد:
//delete a single item
fruitsMap.remove(5);
System.out.println(fruitsMap);
کد بالا شی زیر را در کنسول چاپ می کند:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 6=Mango, 7=Plum}
شی به روز شده نشان می دهد که مورد با جفت کلید-مقدار 5 و “Berries” دیگر بخشی از fruitsMap نیست. روش دوم remove() یک کلید و مقداری را می گیرد که به آن نگاشت می شود.
//delete a single item
fruitsMap.remove(5, "Berries");
System.out.println(fruitsMap);
کد بالا همچنین شی زیر را در کنسول چاپ می کند:
{1=Orange, 2=Melon, 3=Pear, 4=Apple, 6=Mango, 7=Plum}
متد clear() هیچ آرگومان نمی گیرد و void برمی گرداند.
fruitsMap.clear();
System.out.println(fruitsMap);
با اجرای کد بالا، شی خالی زیر در کنسول چاپ می شود:
{}
اکنون می توانید عملیات CRUD را بر روی یک HashMap جاوا انجام دهید
HashMaps یکی از چندین ساختار داده محبوب است که باید بدانید. این مقاله به شما می آموزد که چگونه عملیات CRUD را در جاوا HashMaps انجام دهید. HashMap یک ساختار داده بسیار مفید است، نکته اصلی فروش آن این است که به دلیل سرعت دسترسی آن یکی از کارآمدترین ساختارهای داده است. با این حال، استفاده از آن نیز بسیار راحت است، زیرا امکان ذخیره سازی تصادفی را فراهم می کند.