سلام خدمت عزیزان سایت ویژن در سری جدید از آموزش های برنامه نویسی کاتلین در خدمت شما عزیزان هستیم . در این جلسه ما قصد داریم مبحث HashMap در کاتلین و اینکه چه تفاوتی با Map دارد .را خدمات شما برنامه نویس های عزیز آموزش دهیم .
ببین می خوام خیلی ساده براتون تعریف کنم که HashMap چیه ؟ ببینین هش مپ ها در کاتلین یه جورایی کارکردی مانند لیست ها دارند ولی با این تفاوت ما برای داده های خودمون آمدیم از Key استفاده کردیم . یعنی هر داده ایی که در HashMap ذخیره می شود. دارای یک کلید (Key) می باشد . وما برای اینکه بخواهیم به اون مقدار دسترسی پیداکنیم . باید از کلید مخصوص به آن استفاده کنیم . مثلا من می خواهم در HashMap یک رشته مثلا “Mykotlin” را ذخیره کنم . باید برای آن یک Key نیز بزارم تا موقعی که می خوام مقدار را برای من برگرداند . با دادن کلید (Key) به آن رشته دسترسی پیدا کنم .
HashMap در کاتلین دارای چه ویژگی هایی هست ؟
- از ساختار Key و Value برای پر کردن مقادیر داخل map خود پشتیبانی می کند.
- در زمانی که ما می خواهیم داده های خود را ذخیره می کنیم. از Thread های جداگانه و مختلف استفاده می کند.
- موقع ذخیره سازی اطلاعات بسیار سریع عمل می کند.
- Key یا همون کلید هایی که ما استفاده می کنیم . دارای hashcode هایی است که در موقع جستوجو از آن استفاده می کند.
- ما در HashMap خطای Memory Leak نداریم.
- ما در HashMap ها از یک Hashtable به عنوان یک جدولی برای ذخیره اطلاعاتمون استفاده می کنیم.
کار با HashMap ها در kotlin به چه صورت می باشد ؟
در داخل HashMap یک دستور به نام to وجود دارد و موقع جایگذاری مقادیر وKey از آن استفاده می کنیم . و اینگونه است که مقداری که سمت چپ to هست همون Key ما هست . و مقداری که در سمت راست آن قرار دارد همون مقدار ما می باشد . همه این چیز هایی که براتون گفتم را در کد زیر برای شما آورده ام .
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", "myKey" to 12)
در کد بالا ما یک هش مپ تعریف کرده ایم که در map خود مقادیر جای داده است که هر کدام از این مقادیر دارای یک key است ولی نکته که در کد بالا هست . این است که ما برای key از رشته هم استفاده کرده ایم و هم عدد و همچنین برای مقادیر نیز این گونه است . یعنی در اینجا DataType برای ما مهم نیست . هر ورودی میتواندبگیرد . ولی اگر شما بخواهید می توانید مانند مبحث آرایه می توانیم DataType های خودمون را محدود کنیم . یعنی بگیم کلید ما Int باشه و مقادیر آن نیز رشته باشد . برای اینکه راحتر بفهمید مثال زیر را مشاهده کنید.
val hashmap= hashMapOf<Int,String>(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") print(hashmap.get(2)) ali
دستور get برای نمایش دادن مقادیر داخل HashMap
برای نمایش دادن یک مقدار HashMap در کاتلین از این دستور به کار برده می شود . به این صورت که ما Key را به ()get می دهیم . و مقدار مربوط به آن را برمی گرداند. مانند مثال زیر :
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", "myKey" to 12) print(hashmap.get(2)) ali
ما میتونیم کلیه اطلاعات داخل HashMap را به وسیله یک ساختار تکرار نمایش دهیم . در مثال های پایین ما نمونه هایی از این نمایش ها را برای شما کد نویسی کرده ایم. تا با نحوی کار با حلقه ها در HashMap نیز آشنا شوید .
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") for (item in hashmap.keys) { print(hashmap.get(item).toString()+"\n") } ali myKey farshid reza
در حلقه بالا کلید های ما رو می گیرد . و مقادیر مربوط به آن را برای ما برگرداند. ما می تونیم در کد بالا values ها رو مستقیم نمایش دهیم . مانند مثال زیر :
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") for (item in hashmap.values) { print(item.toString()+"\n") } ali myKey farshid reza
زمانی هم ممکن است ما بخواهیم هم مقادیر و هم Key هارو با هم نمایش دهیم . که در این صورت باید مثل مثال زیر عمل کنید.
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") for (item in hashmap) { print(item.toString()+"\n") } 2=ali 12=myKey 5=farshid 7=reza
استفاده ازدستور entries برای نمایش مقادیر Hashmap در کاتلین
این دستور به گونه ایی است که مقدار Key و مقادیر را در داخل دوتا مقادیر در حلقه ما قرار می دهد . یعنی دو مقدار بر می گرداند. بزارید خیلی آسون برای شما در مثال زیر توضیح بدم .
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") for ((key ,values) in hashmap.entries) { print("$key = $values \n") } 2 = ali 12 = myKey 5 = farshid 7 = reza
استفاده ازدستور put برای اضافه کردمقادیربه Hashmap در کاتلین
اندازه های HashMap ثابت نیست . اگر یادتون باشه ما در آرایه ها همون اول یک آرایه تعریف می کردیم . و لحظه اول نیز برای آن یک حافظه اختصاص میدادیم . ولی Hashmap این گونه نیست و ما می توانیم هر موقع خواستیم مقادیری به آن اضافه می کنیم. مثال :
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") hashmap.put(3,"key1") hashmap.put(4,"key2") hashmap.put(6,"key3") for ((key ,values) in hashmap.entries) { print("$key = $values \n") } 2 = ali 3 = key1 4 = key2 5 = farshid 6 = key3 7 = reza 12 = myKey
استفاده از دستور()removeبرای حذف کردن یک مقدار HashMap
ما با استفاده از دستور ()Put و با استفاده از یک کلید می توانیم مقدار مورد نظر را در HashMap حذف کنیم. مانند نومنه کد زیر :
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") hashmap.remove(2) hashmap.remove(5) for ((key ,values) in hashmap.entries) { print("$key = $values \n") } 12 = myKey 7 = reza
استفاده از دستور ()replace برای جایگزینی یک مقدار در به جای مقداری دیگر در HashMap
شاید نیاز داشته باشید یکی از مقادیری که وارد کردید را عوض کنید در این زمان ما باید از دستور ()replace استفاده کنیم.
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") hashmap.replace(2,"farshid") hashmap.replace(7,"AliReza") for ((key ,values) in hashmap.entries) { print("$key = $values \n") } 2 = farshid 12 = myKey 5 = farshid 7 = AliReza
به کار بردن دستور ()size برای نمایش دادن سایز Hashmap در کاتلین
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") print(hashmap.size) 4
استفاده از دستور ()contains در Hashmap
کاربرد این دستور برای این است که ما می خواهیم بدانیم . Key یا کلیدی که در نظر داریم در HashMap ما وجود دارد یا نه .
val hashmap= hashMapOf(2 to "as" , 5 to "farshid", 7 to "reza", 12 to "myKey") print(hashmap.contains(21)) false
استفاده از دستور clear برای پاک کردن کل HashMap
از این متد زمانی استفاده می کنیم . که میخواهیم HashMapرا کلا پا کنیم .
val hashmap= hashMapOf(2 to "ali", 5 to "farshid", 7 to "reza", 12 to "myKey") print("Size = "+hashmap.size.toString()+"\n") hashmap.clear() print("Size = "+hashmap.size.toString()) Size = 4 Size = 0
تفاوت HashMap با Map در کاتلین چیست ؟
HashMap و Map مانند همند . تفاوت اصلی آن ها این می باشد. که Map در موقع ساخته شدن ، همون لحظه بهش حافظه اختصاص داده می شود. یعنی دارای حافظه ثابت می باشد . و اینکه دیگه نمی توانیم در طول کارمون بهش یک مقداری اضافه کنیم(Put ) . ویا اینکه یک مقداری از حذف کنیم (()remove). و برای این کار ها ما از HashMap استفاده می کنیم.
در اینجا مبحث HashMap در کاتلین از سری آموزش کاتلین تمام شد . ما در این قسمت برای شما گفتیم که HashMap جیه ؟ و چرا از اون استفاده می کنیم . اینکه دارای چه ویژگی های مهمی می باشد . و همچنین ما برای شما عزیزان تعدادی از توابع مهم و کاربردی که در Hashmap استفاده می شود را آوردیم. و گفتیم که HashMap و Map چه تفاوتی با هم دارند . امیدوارم این مبحث برای شما عزیزان مفید بوده باشد .
موفق باشد .
سلام، ممنونم بابت این آموزش. توضیح راحت و قابل فهم. متشکرم
سلام
ممنون از لطفتون