View Full Version : key/value pairs
starparham
جمعه 05 خرداد 1396, 14:14 عصر
سلام
دوستان محترم در مورد key/value pairs توضیحاتی میخواستم، این که چی هست ؟ چ کاربرد های داره ؟؟ و چ طور میشه تشخیص داد تو ی برنامه چ چیزیو به عنوان key و چیو به عنوان value در نظر گرفت ؟؟؟؟
ممنون
vahid-p
جمعه 05 خرداد 1396, 15:55 عصر
key/value یک اصطلاح هست که معمولا در بعضی ساختمان های داده ای استفاده میشه. مثلا در HashMap. شما برای هر مقدار (value) یک کلید (key) در نظر میگیرید که این کلید معمولا باید منحصر به فرد باشه. دقیقا همونطور که در حالت ایده آل هر قفلی توسط یک کلید باز میشه، راه رسیدن به اون مقدار (value) هم لازمه فقط یک کلید (key) باشه.
البته میگم معمولا چون همیشه اینطور نیست. در برخی ساختمان داده ها ممکنه یک کلید برای چند مقدار استفاده بشه. در نتیجه یا با جستجو اون کلید یکی از مقادیر مرتبط رو بهت میده یا تمامی مقادیر رو با اون کلید رو بهت میده. این بستگی به نوع ساختمان داده داره.
به هر حال، جستجو در یک ساختمان داده بزرگ بر اساس کلید معمولا خیلی سریعتر انجام میشه و برای همین کلیدها کاربرد دارند. مثلا ساختمان داده ای به صورت HashMap داریم که اطلاعات تمام دانشجویان رو ذخیره کرده. ما اگر کلید رو شماره دانشجویی قرار بدیم، با وارد کردن شماره دانشجویی خیلی سریع می تونیم به اطلاعات دانشجو دست پیدا کنیم.
اما اگر یک لیست ساده بود، ممکنه لازم باشه کل لیست رو پیمایش کنید.
برای درک اهمیت نوع جستجو، کافیه در نظر داشته باشید، فرض کنید 1 میلیارد رکورد دارید. برای جستجو یک رکورد در این یک میلیارد باید تمام این یک میلیارد رو پیمایش کنیم.
حالا فرض کنید از روشی استفاده کنیم که کلید داشته باشه و بر اساس QuickSearch یا Hash Function بتونیم در اولی با پیچیدگی زمانی log n و دومی با پیچیدگی زمانی 1 بهش دسترسی پیدا کنیم. یعنی برای اولی میشه 30 مقایسه (به جای 1 میلیارد مقایسه) و برای دومی میشه 1 مقایسه (به جای 1 میلیارد مقایسه). هر چند 1 مقایسه عبارت درستی نیست برای Hash ولی به هر حال اینطور میتونی تصور کنی.
فکر میکنم تفاوتش واضح شد
starparham
جمعه 05 خرداد 1396, 18:21 عصر
ممنون از پاسختون
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.