هنر مجموعه در دات نت – لیست

مطمئناً شما قبلاً مجبور شدهاید با دادهها سر و کار داشته باشید و استفاده از List را انتخاب کردهاید، یا به دلیل همه کاربردیهایی که این کلاس ارائه میدهد یا به دلیل اینکه یکی از گستردهترین کلاسها است. یکی از سوالاتی که بیشتر دوست دارم وقتی برنامه نویسی می کنم از خودم بپرسم این است: چرا می خواهم از این اینجا استفاده کنم؟ این یکی از سوالاتی است که اکنون در دومین مقاله از مجموعه مجموعه ها به آن پاسخ می دهیم.
تعریف لیست
همانطور که در مقاله قبلی دیدیم، توصیه این است که از مجموعه های عمومی استفاده کنید، بنابراین کلاس را پیدا می کنیم List<T>
نه فضای نام System.Collections.Generic. آ List<T>
نشان دهنده یک لیست تایپ شده قوی از اشیاء است که می توان با فهرست به آنها دسترسی داشت و دارای روش هایی برای جستجو، مرتب سازی و دستکاری لیست ها است. زیر پارچه ها، List<T>
یک آرایه تک بعدی است که از شاخص صفر شروع می شود.
با استفاده از a List<T>
برای مقداردهی اولیه لیستی از نوع Student، آن را به صورت زیر می نویسیم:
List<Aluno> alunos = new List<Aluno>();
با استفاده از سازنده بدون پارامتر، لیستی با ظرفیت پیشفرض که 4 است ایجاد میکنیم. پس از مقداردهی اولیه، میتوانیم موارد را با استفاده از متد Add() به لیست اضافه کنیم و شی student را به عنوان پارامتر ارسال کنیم، مانند این:
alunos.Add(new Aluno { Id = 1, Nome = "Thaise" });
اکنون این نکته طلایی برای بهینه سازی کد خود با استفاده از آن است List<T>
با تعداد زیادی اقلام! اگر ظرفیت را تعریف نکنیم، دات نت ظرفیتی تا 4 مورد ایجاد می کند که پیش فرض است. هر بار که یک مورد اضافه می شود، بررسی می شود که آیا ظرفیت لیست یک مورد دیگر را دارد یا خیر. اگر ظرفیت کمتر از تعداد موارد به اضافه 1 باشد که می خواهیم اضافه کنیم، لیست جدیدی با ظرفیت دو برابر شده ایجاد می شود و موارد از لیست فعلی به لیست جدید کپی می شود.
به عنوان مثال: در کد بالا، لیستی از دانش آموزان با استفاده از سازنده بدون پارامتر ایجاد می کنیم و یک دانش آموز به آن اضافه می کنیم. ما در حال حاضر یک لیست دانشجویی با ظرفیت حداکثر 4 مورد و یک مورد اضافه شده داریم. حالا بیایید 3 مورد دیگر را وارد کنیم:
alunos.Add(new Aluno { Id = 2, Nome = "Ana" });
alunos.Add(new Aluno { Id = 3, Nome = "Cristiano" });
alunos.Add(new Aluno { Id = 4, Nome = "Maggie" });
در حال حاضر ما هنوز لیستی با ظرفیت تا 4 مورد و اکنون با 4 مورد داریم. یعنی از حداکثر ظرفیت استفاده می کنیم. هنگامی که یک آیتم دیگر اضافه می کنیم، بررسی اینکه آیا لیست یک مورد دیگر را در خود جای داده است منفی خواهد شد. برای نگهداری موارد بیشتر، یک لیست جدید با ظرفیت دو برابر لیست فعلی ایجاد می شود که 8 خواهد بود. موارد موجود در لیست فعلی به لیست جدید کپی می شوند و سپس مورد پنجم اضافه می شود و آن را ثابت می کند. بیش از 3 موقعیت این منطق هر چند بار که لازم باشد برای جا دادن مواردی که اضافه می کنیم تکرار می شود و بنابراین لیست هایی با ظرفیت های 4، 8، 16، 32، 64، 128… برای جمع آوری زباله ایجاد می کنیم تا آنها را تمیز کند. بسته به مقدار، این فشار غیرضروری بر GC وارد می کند که بر عملکرد برنامه شما تأثیر می گذارد. آیا اهمیت تعریف ظرفیت را درک می کنید؟ برای انجام این کار، فقط از سازنده با پارامتر int استفاده کنید:
List<Aluno> alunos = new List<Aluno>(500);
نتیجه
استفاده از قابلیت مقداردهی اولیه فهرست، یک رویکرد بسیار ساده است، اما در هنگام برخورد با حجم زیادی از داده بسیار مفید است. “آه، اما وقتی نمی دانم چند مورد اضافه می شود چه؟” در اینجا اهمیت درک حجم برنامه ای که روی آن کار می کنیم می آید. ایده این نیست که مقدار دقیق را به درستی دریافت کنید، بلکه ایده ای برای جلوگیری از فشار بی مورد بر روی آن است زباله روب. آیا می خواهید با جزئیات بیشتری بفهمید که چگونه این در GC کار می کند؟ اینجا را بررسی کن
منابع
List<T>
کلاس
Github – زمان اجرا dotnet