با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش #c ، را دنبال می کنند. در بخش قبلی با مجموعه ها در زبان #C آشنا شده و انواع آن ها را نام بردیم . در این بخش قصد داریم شما را با لیست آرایه در #C که نوعی پرکاربرد از مجموعه ها در زبان #C است آشنا کنیم.
ArrayList یک مجموعه غیر عمومی در #C است که عناصر آن می تواند شامل هر نوع داده ای باشد.
ArrayList شبیه به یک آرایه است، به جز اینکه میتوانیم در آن عنصری را اضافه کنید و لازم نیست اندازه آن را مشخص کنیم.
1 | ArrayList myArryList = new ArrayList(); |
ArrayList شامل متدها و پراپرتی هایی است که در ادامه با آنها آشنا خواهید شد:
توضیحات | پراپرتی |
تعداد عناصر را که ArrayList می تواند شامل شود را بازمیگرداند. | Capacity |
تعداد عناصر موجود در ArrayList را بازمیگرداند. | Count |
مقدار بازگشتی نشان می دهد که آیا ArrayList دارای اندازه ثابت است یا خیر. | IsFixedSize |
مقدار بازگشتی نشان می دهد که آیا ArrayList فقط خواندنی (read-only) است یا خیر. | IsReadOnly |
می توان توسط آن مقدار عنصری در آرایه را مشخص کنیم و یا آن را بخوانیم. | Item |
توضیحات | متد |
متد Add یک عنصر تکی در انتهای ArrayList را اضافه می کند. متد AddRange عناصر مشخص شده را به ArrayList اضافه می کند. | Add()/AddRange() |
Insert یک عنصر را در Index مشخص شده در ArrayList وارد میکند. متد InsertRange تمام عناصری از مجموعه مشخص شده را در Index مشخص شده در ArrayList وارد میکند. | Insert()/InsertRange() |
متد Remove عنصر مشخص شده را از ArrayList حذف می کند. متد RemoveRange تعدادی از عناصر را از ArrayList حذف می کند. | Remove()/RemoveRange() |
عنصر را در Index مشخص شده از ArrayList حذف می کند. | RemoveAt() |
تمام عناصر ArrayList را مرتب می کند. | Sort() |
ترتیب عناصر در کل ArrayList را تغییر می دهد. | Reverse() |
بررسی اینکه عنصر مشخص شده در ArrayList وجود دارد یا نه. در صورت وجود true در غیر اینصورت false برگشت می دهد. | Contains |
تمام عناصر موجود در ArrayList را حذف می کند. | Clear |
تمام عناصر یا طیفی از آنها را به آرایه سازگار کپی می کند. | CopyTo |
طیف عناصر مشخص شده از ArrayList را برمی گرداند. | GetRange |
عنصر مشخص شده را در آرایه جستجو می کند و اگر موجود باش صفر و در غیر اینصورت ۱- بر می گرداند. | IndexOf |
آرایه سازگار را از ArrayList بازمی گرداند. | ToArray |
متد AddRange می تواند شامل هر مجموعه ای از مجموعه های موجود در اینترفیس ICollection باشد ، به عنوان مثال List، ArrayList، SortedList، صف، پشته، HashSet، Hashtable و … .
1 2 3 4 5 6 7 8 9 10 11 12 | ArrayList arryList1 = new ArrayList(); arryList1.Add(1); arryList1.Add("Two"); arryList1.Add(3); arryList1.Add(4.5); ArrayList arryList2 = new ArrayList(); arryList2.Add(100); arryList2.Add(200); //adding entire arryList2 into arryList1 arryList1.AddRange(arryList2); |
همچنین می توانید هنگام تعریف کردن ArrayList مقادیر را وارد کنید مانند مثال زیر :
1 | ArrayList arrayList = new ArrayList() { 100, "Two", 12.5, 200 }; |
عناصر ArrayList را می توان با استفاده از indexer، به همان شیوه ای که عاصر آرایه ها را میخوانیم ، بازگردانیم.
ولی توجه داشته باشید که در برخی موارد برای استفاده از این عناصر نیاز به تبدیل نوع مناسب دارید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ArrayList myArryList = new ArrayList(); myArryList.Add(1); myArryList.Add("Two"); myArryList.Add(3); myArryList.Add(4.5f); //Access individual item using indexer int firstElement = (int) myArryList[0]; //returns 1 string secondElement = (string) myArryList[1]; //returns "Two" int thirdElement = (int) myArryList[2]; //returns 3 float fourthElement = (float) myArryList[3]; //returns 4.5 //use var keyword var firstElement = myArryList[0]; //returns 1 |
همچنین میتوان از حلقه ها برای دسترسی به مقادیر عناصر ArrayList دسترسی داشته باشید مانند مثال زیر :
1 2 3 4 5 6 7 8 9 10 11 12 | ArrayList myArryList = new ArrayList(); myArryList.Add(1); myArryList.Add("Two"); myArryList.Add(3); myArryList.Add(4.5); foreach (var val in myArryList) Console.WriteLine(val); //Or for(int i = 0 ; i< myArryList.Count; i++) Console.WriteLine(myArryList[i]); |
خروجی :
1 2 3 4 | 1 Two 3 4.5 |
نکته : یک ArrayList می تواند مقادیر چندگانه و تکراری داشته باشد.
از متد Insert برای وارد کردن یک آیتم واحد در فهرست مشخص شده استفاده میکنیم. مانند مثال زیر :
1 2 3 4 5 6 7 8 9 10 11 | ArrayList myArryList = new ArrayList(); myArryList.Add(1); myArryList.Add("Two"); myArryList.Add(3); myArryList.Add(4.5); myArryList.Insert(1, "Second Item"); myArryList.Insert(2, 100); foreach (var val in myArryList) Console.WriteLine(val); |
خروجی :
1 2 3 4 5 6 | 1 Second Item 100 Two 3 4.5 |
از متد InsertRange برای وارد کردن مقادیر مجموعه دیگری به ArrayList در شماره اندیس مشخص شده استفاده میکنیم:
1 2 3 4 5 6 7 8 9 10 11 12 13 | ArrayList arryList1 = new ArrayList(); arryList1.Add(100); arryList1.Add(200); ArrayList arryList2 = new ArrayList(); arryList2.Add(10); arryList2.Add(20); arryList2.Add(30); arryList2.InsertRange(2, arryList1); foreach(var item in arryList2) Console.WriteLine(item); |
خروجی :
1 2 3 4 5 | 10 20 100 200 30 |
برای حذف یک عنصر مشخص از ArrayList از متد Remove استفاده میکنیم :
1 2 3 4 5 6 7 8 9 | ArrayList arryList1 = new ArrayList(); arryList1.Add(100); arryList1.Add(200); arryList1.Add(300); arryList1.Remove(100); //Removes 1 from ArrayList foreach (var item in arryList1) Console.WriteLine(item); |
خروجی :
1 2 | 200 300 |
با استفاده از متد RemoveAt یک عنصر را از محل اندیس مشخص شده حذف میکنیم :
1 2 3 4 5 6 7 8 9 | ArrayList arryList1 = new ArrayList(); arryList1.Add(100); arryList1.Add(200); arryList1.Add(300); arryList1.RemoveAt(1); //Removes the first element from an ArrayList foreach (var item in arryList1) Console.WriteLine(item); |
خروجی :
1 2 | 100 300 |
از متد RemoveRange نیز برای حذف براساس اندیس و تعداد مشخصی از عناصر ArrayList استفاده میکنیم :
1 2 3 4 5 6 7 8 9 | ArrayList arryList1 = new ArrayList(); arryList1.Add(100); arryList1.Add(200); arryList1.Add(300); arryList1.RemoveRange(0,2);//Removes two elements starting from 1st item (0 index) foreach(var item in arryList1) Console.WriteLine(item); |
خروجی :
1 | 300 |
متد Sort عناصر را مرتب سازی می کند ، ولی تمام عناصر باید باهم هم نوع باشند ، در غیر اینصورت خطای در زمان اجرا رخ خواهد داد.
متد Reverse ترتیب عناصر را در جهت معکوس انجام میدهد ، یعنی آخرین عنصر به شماره اندیس ۰ منتقل می شود و … .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | ArrayList arryList1 = new ArrayList(); arryList1.Add(300); arryList1.Add(200); arryList1.Add(100); arryList1.Add(500); arryList1.Add(400); Console.WriteLine("Original Order:"); foreach(var item in arryList1) Console.WriteLine(item); arryList1.Reverse(); Console.WriteLine("Reverse Order:"); foreach(var item in arryList1) Console.WriteLine(item); arryList1.Sort(); Console.WriteLine("Ascending Order:"); foreach(var item in arryList1) Console.WriteLine(item); |
خروجی :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Original Order: 300 200 100 500 400 Reverse Order: 400 500 100 200 300 Ascending Order: 100 200 300 400 500 |
ArrayList.Contains بررسی می کند که آیا عنصر مشخص شده در ArrayList وجود دارد یا خیر.
در صورت وجود true در غیر اینصورت false برگشت داده می شود.
1 2 3 4 5 6 | ArrayList myArryList = new ArrayList(); myArryList.Add(100); myArryList.Add("Hello World"); myArryList.Add(300); Console.WriteLine(myArryList.Contains(100)); |
خروجی :
1 | True |
در این قسمت با ArrayList که نوعی پرکاربرد از مجموعه ها در #C است را آشنا شدید .
در قسمت بعد شما را با نوعی دیگر از مجموعه ها در #C به نام SortedList آشنا خواهیم کرد.