PDA

View Full Version : سوال: HashTable چیه؟!



صباح فتحی
یک شنبه 21 شهریور 1389, 10:49 صبح
سلام ...
HashTable چیه و چه کاربردی داره ؟
ممنون

ASKaffash
یک شنبه 21 شهریور 1389, 11:37 صبح
سلام
یک کلکسیون شامل کلید و مقدار است که هردو رشته ای هستند البته خدا بیامرزد دوران تمام شد باید از List و Generic استفاده شود

صباح فتحی
یک شنبه 21 شهریور 1389, 11:41 صبح
یعنی دیگه کاربردی نداره؟

ASKaffash
یک شنبه 21 شهریور 1389, 12:09 عصر
سلام
بهتره از List و Generic استفاده بشه چون کامل پوشش میده در ضمن اندیس هم داره :


private class MyHashTable
{
internal MyHashTable(string Key, string Value)
{
this.Key = Key;
this.Value = Value;
}
internal string Key { set; get; }
internal string Value { set; get; }
public override string ToString()
{
return this.Key + "=" + this.Value;
}
}
private void TestList_Click(object sender, EventArgs e)
{
List<MyHashTable> L = new List<MyHashTable>();
L.Add(new MyHashTable("A", "Hello"));
L.Add(new MyHashTable("B", "Ok"));
this.Text = L[1].ToString();
}

sia_2007
یک شنبه 21 شهریور 1389, 13:10 عصر
به جای این کار از Dictionary استفاده کنین که جنس Key و Value تون هر چی خواستین باشه
تموم امکانات لازمه رو هم بتون میده
دوست عزیز؛ Hash Table فلسفه اش اینه که Key اش تکراری نباشه؛ که شما چنین چیزی رو پیاده سازی نکردی؛
حداقل Type هات رو Generic بگیر؛ که جنس Hash Table ابداعیت محدود به دو تا String نباشه :چشمک:

//---
Dictionary<String, Object> MyHashTable = new Dictionary<String, object>();
MyHashTable.Add("Document1", new Document());
MyHashTable.Add("Document2", new Document());
//---
Dictionary<Int32, Object> MyIntHashTable = new Dictionary<Int32, object>();
MyIntHashTable.Add(1, new Document());
MyIntHashTable.Add(2, new Document());
//---
این کلاس تو System.Collections.Generic هستش

jalalx
یک شنبه 21 شهریور 1389, 14:49 عصر
همون کلاس Dictionary یک HashTable با امکانات اضافی هست!

البته خدا بیامرزد دوران تمام شد باید از List و Generic استفاده شود.
دوران مفاهیم ساختمان داده با از بین رفتن کامپیوترها تموم می شه!

List کاربرد موبوط به خودشو داره. اون هم یک مفهومه مستقل هست که تو ساختمان داده تعریف خودشو داره و به چند دسته تقسیم می شه:

Linked list
Doubly linked list
Xor linked list
Unrolled linked list
Zipper
VList
Skip list
Jump list
Self-organizing list

ASKaffash
یک شنبه 21 شهریور 1389, 14:53 عصر
سلام
HashTable که ایندکس ندارد! ولی List و Dictionary می توانند شماره عضو را ارائه دهند

jalalx
یک شنبه 21 شهریور 1389, 14:55 عصر
سلام
HashTable که ایندکس ندارد! ولی List و Dictionary می توانند شماره عضو را ارائه دهند

چرا نداشته باشه؟ برای مقدار Key یک عدد صحیح غیر منفی و (طبق تعریف) غیر تکراری بدید!

ASKaffash
یک شنبه 21 شهریور 1389, 14:59 عصر
سلام
یک نمونه سورس قرار می دهید ؟

jalalx
یک شنبه 21 شهریور 1389, 15:12 عصر
همون کدی که در بالا اقای sia_2007 قرار داده کاملا گویاست!




//---
.
.
.
Dictionary<Int32, Object> MyIntHashTable = new Dictionary<Int32, object>();
MyIntHashTable.Add(1, new Document());
MyIntHashTable.Add(2, new Document());
//---


شما به کمک کلید ( که در این مثال همان اندیس است) برای دسترسی به مقادیر استفاده کنید.


object o = MyIntHashTable[1];

ASKaffash
یک شنبه 21 شهریور 1389, 15:31 عصر
سلام
کد ایشان با Dictionary است و قابلیت اندیس را می تواند داشته باشد شما اندیس را برای HashTable ایجاد کنید درپست 7 که گفتم

صباح فتحی
یک شنبه 21 شهریور 1389, 18:33 عصر
والا این حرفای گنده ای که شما میزین رو اصلامتوجه نشدم.این تاپیک روزدم تاچیز ی یاد بگیرم.اماگمراهترشدم:ناراحت :
Dictionary,list,generic
این بحث ها کلادرمورد چیه درکجاهست تا مطالعه کنم

modern_amin
چهارشنبه 07 دی 1390, 11:56 صبح
از کدوم using استفاده میکنه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

modern_amin
چهارشنبه 07 دی 1390, 12:20 عصر
فهمییییدم ، از این استفاده میکنه

using System.Collections;

rahmatr
چهارشنبه 07 دی 1390, 16:10 عصر
والا این حرفای گنده ای که شما میزین رو اصلامتوجه نشدم.این تاپیک روزدم تاچیز ی یاد بگیرم.اماگمراهترشدم:ناراحت :
Dictionary,list,generic
این بحث ها کلادرمورد چیه درکجاهست تا مطالعه کنم

برای مطالعه ساختار Hash table :
http://en.wikipedia.org/wiki/Hash_table

و تفاوت آن با Dictionary :
Hashtable and Dictionary Collection Types (http://msdn.microsoft.com/en-us/library/4yh14awz.aspx)

هر دوی Hashtable و Dictionary ساختار مشابهی دارند و برای ذخیره object هایی استفاده می شوند که دارای کلیدی برای بازیابی آنها هستند.
در Hashtable هنگام گرفتن مقدار یک کلید، وقتی کلید موجود نباشد null برگشت داده می شود ولی در Dictionary خطای The given key was not present in the dictionary بوجود می آید.

modern_amin
پنج شنبه 08 دی 1390, 09:35 صبح
شما کدوم رو بیشتر ترجیح میدید؟؟؟

rahmatr
پنج شنبه 08 دی 1390, 10:28 صبح
بستگی به کار شما دارد.
البته من تجربه استفاده از هر دو را ندارم و باید در این مورد تحقیق کنید.

اینجا (http://msdn.microsoft.com/en-us/library/4yh14awz.aspx) گفته که کارایی Dictionary در استفاده به صورت <T,T> بالاتر از Hashtable است. چون سربار تبدیل نوع را ندارید.