Lista part.2 – odczyt danych.

Lista part.2 – odczyt danych.

Podczas omawiania tablic napisaliśmy kod, który odczytuje pierwsze 7 miast z pliku CSV, ale co się stanie, jeśli chcemy odczytać wszystkie kraje z pliku CSV?

Czy możemy to zrobić?

Cóż, jest problem. Spójrz na kod w metodzie ReadFirstNCitys, która tworzy instancję tablicy do przechowywania miast. Tworząc tablicę, mówimy, jak duża będzie,
to znaczy, ile elementów będzie zawierać.

public City[] ReadFirstNCitys(int nCitys)
{
   City[] citys = new City[nCitys];
   ...
   return citys;
}

To dobrze, kiedy z góry zdecydowaliśmy, że chcemy odczytać 7 miast, ale jeśli chcemy odczytać wszystkie miasta, a kod odczytuje plik CSV wiersz po wierszu.

Wtedy nie będziemy wiedzieć, ile jest miast, dopóki kod nie osiągnie końca pliku i nie odkryje, że nie ma już więcej miast, ale to jest już za późno, aby utworzyć tablicę, ponieważ musimy umieścić miasta w tablicy, gdy każde z nich zostanie zaimportowane.

Dlatego w tej sytuacji musimy utworzyć instancję kolekcji, zanim dowiemy się, ile elementów będziemy w niej przechowywać.

Jak możemy to zrobić za pomocą tablicy?

Niestety, w przypadku tablic odpowiedź brzmi:
nie możemy i to jest podstawowa słabość tablic. Tablice mają stały rozmiar.

Musimy określić rozmiar tablicy, kiedy tworzymy tablicę, ile elementów zawiera ta tablica, a potem nigdy nie możemy zmienić tego rozmiaru.

To świetnie, jeśli jest to zbiór powiedzmy miesięcy w roku lub dni tygodnia,
kiedy dokładnie wiemy, ile elementów będziemy potrzebować, ale w większości przypadków, gdy czytamy dane z zewnętrznego źródła danych, nie wiemy, ile elementów będzie, dopóki nie skończymy czytać danych.

I tu pojawia się lista – List<T>

Lista jest bardzo podobna do tablicy, z tym wyjątkiem, że nie ma ustalonego rozmiaru. Możemy dowolnie dodawać do niej dowolną liczbę elementów, kiedy tylko chcemy.

Lista automatycznie rozszerza się i kurczy w zależności od zawartości.
Po utworzeniu obiektu listy możemy w łatwy sposób wstawiać elementy,
usuwać wybrane z dowolnego miejsca, podglądać ich zawartość,
a nawet przenosić z jednego miejsca w inne
.

Jeśli chcemy, aby lista stringów zawierała miesiące, deklarujemy zmienną jako Listę stringów.

List<string> months = new List<string>();

I będzie ona równa nowej liście stringów i zauważ, że nazwa typu, którego jest lista to string. Podobnie, gdybyśmy chcieli listę liczb całkowitych.

List<int> ints = new List<int>();

I innego typu listy.

List<double> chars = new List<double>();
List<char> chars = new List<char>();
List<Person> chars = new List<Person>();

Po prawej stronie znaku równości widać standardową składnię konstruktora C#. Konstruktor nie ma parametrów, ponieważ w przeciwieństwie do tablicy, lista zawsze zaczyna swoje życie jako pusta. Musimy dynamicznie dodawać do niej elementy po utworzeniu jej.

Nazwa typu listy ma oczywiście inną składnię niż tablice, w których można by zobaczyć coś w rodzaju nawiasów kwadratowych, ponieważ tablice są częścią środowiska wykonawczego .NET i dlatego mają swoją własną specjalną składnię w języku C#.

Z drugiej strony lista jest zwykłym typem, a zatem jest zgodna z normalną składnią C# przy tworzeniu nowych obiektów.

Zasadniczo listy są bardziej elastyczne niż tablice,
ale tablice zwykle dają ci prostszy kod,
więc jako ogólną zasadę użyj listy zamiast tablicy tylko wtedy,
gdy jest to sytuacja, w której nie możesz użyć tablicy.

Całościowe omówienie tematu kolekcji (tablica, lista, kolejka, stos, słownik).
Wiele przydatnych wskazówek i dobrych praktyk dostępne jest na kursie:

https://dev-hobby.pl/kursy/c-wprowadzenie-do-kolekcji/

99 comments

  1. Wow! In the end I got a website from where I be capable of in fact get valuable information concerning my study and knowledge. Mimi Reinold Lionel

  2. Thank you ever so for you article. Much thanks again. Awesome. Patricia Mischa Streeto

  3. Way cool! Some extremely valid points! I appreciate you penning this write-up and also the rest of the website is really good. Raquela Rowney Gino

  4. Thanks for your whole work on this website. My niece takes pleasure in working on research and it is simple to grasp why. We all notice all relating to the powerful ways you render vital tricks via your website and therefore welcome response from website visitors on this topic while our own simple princess is without question understanding so much. Take pleasure in the rest of the year. Your performing a very good job. Robina Peadar Darrin

  5. It is best to participate in a contest for among the best blogs on the web. Laureen Paddy Zumstein

  6. matter to be really one thing that I think I might never understand. Eleanore Julian Aprile

  7. thanks Jill. I always wonder how insights into the making of writing are viewed, especially ones that draw on personal circumstances. Are they too immature? Should they be hidden from sight? But they help me understand not only the process of writing but the process of living, and how the two are connected. Pepita Travus Aholla

  8. Zourbuth, thanks for the incredible plug-in! It really looks great! Marilee Allistir Sontag

  9. Very informative information. I plan to share this with friends and family. I also plan to visit the web site you gave us. Really liked the picture of the hand reaching for the credit card! Nerte Delano Sherill

  10. Thank you ever so for you blog article. Really looking forward to read more. Want more. Philippine Cullie Amaryl

  11. Hurrah! After all I got a weblog from where I know how to truly take valuable facts regarding my study and knowledge. Christen Dukey Palermo

  12. Wow, superb blog layout! How long have you been blogging for? Shawn Brig Gard

  13. Id have to examine with you here. Which is not one thing I usually do! I enjoy studying a submit that may make people think. Also, thanks for allowing me to comment! Malinda Ase Veleda

  14. Asking questions are genuinely pleasant thing if you are not understanding anything completely, except this post offers pleasant understanding yet.| Collen Roarke Samul

  15. Way cool! Some extremely valid points! I appreciate you writing this write-up and the rest of the website is very good. Vivia Lazar Burney

  16. Thank you so much and I am looking ahead to touch you. Lorilyn Garold Touber Christian Cece Brandyn

  17. Good blog post. I certainly love this site. Stick with it! Katrine Bradford Carmella

  18. Hey there! Do you know if they make any plugins to assist with SEO? Aloysia Teador Winni

  19. I visited various sites but the audio quality for audio songs current at this web page is genuinely superb.| Vanda Germain Alesandrini

  20. Hi friends, how is the whole thing, and what you desire to say on the topic of this piece of writing, in my view its actually amazing for me. Nora Bradford Leake

  21. I am continually searching online for articles that can facilitate me. Thanks! Alidia Costa Sulamith

  22. Thank you so much for sharing your experience with Wealthy Affiliate, and I wish you success with your business! Patty Sanders Luthanen

  23. I really appreciate this post. I have been looking all over for this! Thank goodness I found it on Bing. You have made my day! Thx again! Karel Micky Cavanaugh

  24. Everything is very open with a clear clarification of the issues. It was really informative. Your website is extremely helpful. Thanks for sharing! Enrichetta Richard Karly

  25. Yes. So much good stuff here. I especially love practicing gratitude. Selma Balduin Annamarie

  26. Superb, what a website it is! This website gives useful information to us, keep it up. Deb Davis Neille

  27. I have read a few good stuff here. Certainly worth bookmarking for revisiting. I wonder how much effort you put to create such a excellent informative site. Sukey Svend Karlin

  28. This is one awesome blog article. Much thanks again. Really Cool. Ingunna Natty Millford

  29. I like it when folks come together and share views. Great site, stick with it! Krystal Lorne Bessie

  30. Everyone loves it when folks get together and share ideas. Great site, stick with it! Marlane Albie Hesky

  31. I like the helpful info you provide in your articles. I will bookmark your weblog and check again here regularly. Betsey Chance Ichabod

  32. Everything is very open with a very clear description of the issues. It was really informative. Your website is useful. Thank you for sharing! Kylen Jarret Niple

  33. Pretty! This was a really wonderful article. Thanks for providing this information. Dale Leonidas Lenhard

  34. excellent issues altogether, you simply gained a new reader. Georgeanne Sherlocke Cown

  35. Way cool! Some extremely valid points! I appreciate you writing this write-up plus the rest of the website is really good. Hilda Hamilton Diane-Marie

  36. Chciałbym zostać praktykantem, podczas gdy ty piszesz, jak mogę zapisać się na blog?

  37. Wszyscy uwielbiają, gdy ludzie spotykają się i dzielą przemyśleniami. Świetna strona internetowa, kontynuuj dobrą pracę!

  38. Wow, fantastyczny układ bloga! Jak długo blogujesz? dzięki tobie blogowanie wygląda na łatwe. Ogólny wygląd Twojej witryny internetowej jest świetny, podobnie jak zawartość!

  39. Ta informacja jest bezcenna. Jak mogę dowiedzieć się więcej?

  40. WOW, właśnie tego szukałem. Przyszedłem tutaj, wyszukując słowo kluczowe

  41. Mój programista próbuje przekonać mnie do przejścia na .net z PHP.

  42. Sprawdzałem wiele twoich wpisów i muszę powiedzieć, że całkiem niezłe rzeczy. Na pewno dodam twoją stronę do zakładek.

  43. Ten projekt jest niesamowity! Oczywiście wiesz, jak zapewnić rozrywkę czytelnikowi.

  44. Czy nie masz nic przeciwko, jeśli zacytuję kilka Twoich postów, o ile podam informacje o autorach i źródłach z powrotem do Twojej witryny? Mój blog znajduje się dokładnie w tej samej niszy, co Twoja, a moi goście z pewnością skorzystaliby z wielu informacji, które tu podajesz. Daj mi znać, jeśli ci to odpowiada. Pozdrowienia!

  45. Szacunek dla autora strony, kilka dobrych selektywnych informacji.

  46. Wspaniała strona internetowa. Wiele pomocnych informacji tutaj.

  47. Dziś surfuję po sieci ponad 4 godziny, ale nigdy nie znalazłem interesującego artykułu takiego jak Twój. To jest dla mnie wystarczająco warte. Osobiście, jeśli wszyscy właściciele witryn i blogerzy stworzyli dobre treści, tak jak Ty, Internet będzie o wiele bardziej przydatny niż kiedykolwiek wcześniej.

  48. Świetny blog tutaj! Dodatkowo twoja strona www zmienia się bardzo szybko!

  49. Cześć. Odkryłem Twoją witrynę za pośrednictwem Google, gdy szukałem podobnej sprawy, Twoja witryna pojawiła się. Wygląda na to, że jest dobra. Dodałem go do zakładek w moich zakładkach Google, aby ją odwiedzić.

  50. Zrobiłeś tam kilka fajnych uwag. Poszukałem tematu w Internecie i stwierdziłem, że większość osób zgadza się z twoją witryną.

  51. Lubię czytać post, który skłoni ludzi do myślenia. Dziękuję również za umożliwienie mi komentowania. Melissa Christos Sheehan

  52. W sumie wspaniałe wydania, właśnie otrzymałeś nowego czytelnika. Nicol Niven Breanne

  53. Lubię czytać post, który sprawi, że ludzie myślą. Wielkie dzięki za umożliwienie mi komentowania!

  54. To moja ulubioną tę stronę internetową, wydaje się bardzo korzystna, nieoceniona. Eliza

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *