HashMap در کاتلین | HashMap چیست ؟ و چه ویژگی های دارد؟

سلام خدمت عزیزان سایت ویژن در سری جدید از آموزش های برنامه نویسی  کاتلین در خدمت شما عزیزان هستیم . در این جلسه ما قصد داریم مبحث 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 چه تفاوتی با هم دارند . امیدوارم این مبحث برای شما عزیزان مفید بوده باشد .

موفق باشد .

برای امتیاز به این نوشته کلیک کنید!
[کل: 2 میانگین: 4.5]
اشتراک‌گذاری

فرشید حبیبی هستم . برنامه نویس موبایل، سئو و وردپرس همچنین علاقه مند به تولید محتوا در زمینه برنامه نویسی و تکنولوژی های روز دنیا.

یک نظر

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *