Różnica między tablicą C # a listą

C # Array vs List jest wszędzie tam, gdzie spotykają się abstrakcja i implementacja ludzi w informatyce. Tablica jest niesamowicie mocno powiązana ze sprzętowym pojęciem ciągłej, ciągłej pamięci, przy czym każda część ma identyczny rozmiar (chociaż zazwyczaj te części są adresami, a więc rozmawiają z referencjami o nie identycznych rozmiarach). Lista może być pomysłem (od arytmetyki do pewnego stopnia) wszędzie tam, gdzie części są zamawiane i gdzie (zwykle) jest początek i koniec, a zatem wszędzie tam, gdzie możliwe jest indeksowanie. Te dwa pomysły całkiem dobrze się układają. Jednak gdy rozważymy listę jako abstrakcyjny sort danych, podejście do dostępu do danych i manipulowania nimi, jesteśmy w stanie złamać wiele z tych reguł.

Co to jest tablica?

Tablica może być sekwencyjnym zestawem porównywalnych danych, które będą dostępne zgodnie z „indeksem”. To najlepszy styl systemu, w którym pogoda utrzymuje się w ciągłym miejscu pamięci.

W Array indeks zaczyna się od zera, dlatego aby uzyskać dostęp do podstawowej części tablicy „numarray”, powinien być zapisany jako numarray (0).

Tablica może być kolejną sekcją pamięci, która zajmuje n * rozmiar (typ) bajtów, gdziekolwiek n oznacza, że ​​długość tablicy i rozmiar (typ) to rozmiar w pamięci potrzebny do przechowywania sortowania informacji, do którego przechodzisz użyj w tablicy. Sugeruje to, że jeśli chcesz utworzyć tablicę stu liczb całkowitych, a każda liczba całkowita zajmuje cztery bajty, być może będziesz musiał zostać zmuszony do posiadania nieużywanej sekcji pamięci wynoszącej co najmniej czterysta bajtów (100 * 4). To dodatkowo oznacza, że ​​tablica jest dość tania w formowaniu, uwalnianiu i używaniu w wyniku dużej ilości pamięci.

Opcje tablicy: -

  • Informacje są przechowywane w formie ciągłego przydziału pamięci. każda połowa następuje inaczej po raz pierwszy w ciągu miesiąca. przydział nie jest przypadkowy.
  • Dają losowy dostęp, taki jak arr (0), arr (6) itp.
  • Istnieje statyczny przydział pamięci. n może to spowodować marnowanie pamięci.
  • W każdej komórce tablicy jest tylko 1 styl danych.
  • Wstawianie i usuwanie są nieco intensywniejsze.

Co to jest lista?

ArrayList może być asortymentem obiektów tego samego lub różnych typów. Wymiary ArrayList są dynamicznie zawyżane lub cięte, zależnie od potrzeby. Działa jak tablica, jednak w przeciwieństwie do tablicy w ArrayList, rzeczy są dynamicznie przydzielane lub zwalniane, tzn. Można dodawać, usuwać, indeksować lub wyszukiwać dane w bardzo szerokim asortymencie.

Lista, ale może być zupełnie inną strukturą. Większość implementacji list to mieszanka węzłów, które przechowują: jeden. - Jedna cena i, 2. - Jeden lub wiele wskaźników, które utrzymują węzły połączone między nimi. To sugeruje, że po prostu nie chcesz ogromnej części dostępnej pamięci o rozmiarze wystarczająco dużym, aby pomieścić wszystkie twoje dane, ponieważ węzły są rozproszone w twojej pamięci.

Opcje listy: -

  • Informacje są przechowywane losowo w komponentach. n każda połowa jest połączona z inną za pomocą wskaźnika do następnej komórki (n do poprzedniej komórki tylko w przypadku listy podwójnych linków)
  • Dostęp do nich jest możliwy kolejno dzięki zależności każdej połowy
  • Jest przydzielany dynamicznie, że m / r jest przydzielany do każdej komórki po przetworzeniu żądania. Dzięki temu nie ma marnotrawstwa m / r
  • Pojedyncza komórka jest podzielona na kilka składników, z których każdy zawiera informacje różnego rodzaju. Ostatnim jednak musi być wskaźnik do wynikowej komórki
  • Wstawianie i usuwanie jest znacznie łatwiejsze i szybsze. Patrzenie też jest łatwiejsze.

Bezpośrednie porównanie między tablicą C # a listą

Poniżej znajduje się 5 najlepszych różnic między tablicą C # a listą

Kluczowa różnica między tablicą C # a listą

Jak widać, istnieje wiele różnic między wydajnością tablicy C # a wydajnością listy. Spójrzmy na najlepsze porównanie między tablicą C # a listą poniżej -

  1. Array przechowuje dane tego samego rodzaju, podczas gdy ArrayList przechowuje dane w typie obiektu, który może być różnego rodzaju.
  2. Rozmiar tablicy ArrayList rośnie dynamicznie, podczas gdy rozmiar tablicy pozostaje statyczny w całym programie.
  3. Operacja wstawiania i usuwania w ArrayList jest wolniejsza niż ArrayList.
  4. Tablice są silnie pisane na maszynie, podczas gdy ArrayLists nie są silnie pisane na maszynie.
  5. Tablice należą do systemu. Przestrzeń nazw Array, podczas gdy ArrayList należy do Systemu. Przestrzeń nazw kolekcji.
  6. Po wybraniu między Array i ArrayList wybierz pomysł na ich opcje, które po prostu musisz zaimplementować.

Tablica C # a tabela porównawcza list

Poniżej znajduje się najwyższe porównanie między tablicą C # a listą

S.No.

Szyk

Lista

1Tablice są ciągłe w pamięci, co powoduje, że wyczerpanie (pod względem wydajności) wstawiania części na środku listy jest wyczerpujące. Zaletą jest to, że możliwość wykonywania losowego dostępu.Listy, przeciwnie, są częściami rozwijającymi się w pamięci, łączącymi się. Umożliwia to łatwe wstawianie do listy, jednak losowy dostęp bez dalszych struktur danych nie jest możliwy.
2)Macierz może być systemem, to znaczy szczególnym podejściem do organizowania danych w urządzeniu pamięci.Lista jest abstrakcyjnym typem danych, to znaczy dowolną strukturą danych, która obsługuje określoną grupę operacji.
3)Tablica to zbiór jednorodnych części.Lista to zbiór elementów heterogenicznych.
4Przydzielona pamięć macierzy jest statyczna i ciągła.Przydzielona pamięć listy jest dynamiczna i losowa.
5Użytkownik nie musi ograniczać śledzenia następnej alokacji pamięci.Użytkownik musi ograniczyć śledzenie następnej lokalizacji, gdziekolwiek przydzielona jest pamięć.

Wniosek - C # Array vs List

Widzieliśmy porównanie użycia pamięci wydajności Array C # względem listy w języku C #. Ze względu na szybkość zazwyczaj warto polubić zwykłe tablice. Zysk z wydajności ma kluczowe znaczenie.

Listy są używane znacznie częściej w C # niż tablice, jednak istnieją pewne przypadki, w których tablice będą (lub powinny) być używane, wraz z tym, czy prawdopodobieństwo, że twoje dane nie wzrosną znacząco lub jeśli poradzisz sobie z stosunkowo dużą ilością danych które trzeba będzie zmuszać do indeksowania.

Pozwól, że dam ci 2 próbki list, które łamią zasady tablicy. Na liście linków każda część wskazuje na następną część, dlatego po prostu umieszczę część zamienną między 2 istniejącymi częściami lub zabiorę jedną i naprawię pozostałe 2 (poprzednia i następna); mając na uwadze, że będę uzyskiwać dostęp do części za pośrednictwem indeksu, zrobię to wyłącznie, przechodząc od jednej części do zapewniania i sprawdzania, więc tak naprawdę nie jest indeksowany. Innym przykładem jest kolejka, gdziekolwiek tylko zwiększę napiwek i zabiorę od początku; jeśli chcę uzyskać dostęp do części za pomocą indeksu, jest to wykonalne, jednak najwyraźniej nie źle traktuję właściwe sortowanie danych abstrakcyjnych. Nie ma znaczenia, czy wdrożenie dałoby to po prostu.

Polecany artykuł

Jest to przewodnik po najważniejszych różnicach między tablicą C # a listą. Tutaj omawiamy również kluczowe różnice między tablicą C # a listą za pomocą infografiki i tabeli porównawczej. Możesz także zapoznać się z następującymi artykułami -

  1. Lista Java lub lista tablic
  2. Interfejs C # vs Klasa abstrakcyjna
  3. ASP.NET vs C #
  4. Java Vector vs ArrayList