C# ArrayList vodič s primjerima

⚡ Pametni sažetak

ArrayList u C# je dinamička kolekcija iz imenskog prostora System.Collections koja pohranjuje elemente kao objekte. Za razliku od niza, raste i smanjuje se tijekom izvođenja i može sadržavati cijele brojeve, nizove znakova i logičke vrijednosti zajedno u jednoj listi.

  • 🔄 Dinamičko dimenzioniranje: ArrayList dodaje i uklanja elemente tijekom izvođenja, tako da se broj elemenata ne fiksira unaprijed kao kod niza.
  • ???? Pohrana objekata: Svaki element se pohranjuje kao objekt, što omogućuje jednoj ArrayList grupi da sadrži mješovite tipove podataka kao što su int, string i bool.
  • ➕ Osnovne metode: Dodaj, Umetni, Ukloni, Ukloni na, Sadrži i Sortiraj pokrivaju svakodnevne operacije na ArrayList-u.
  • 📊 Broj i kapacitet: Svojstvo Count vraća trenutni broj stavki, dok Capacity predstavlja dodijeljeni prostor za pohranu.
  • ✅ Moderni izbor: Microsoft preporučuje generički List za novi kod jer dodaje sigurnost tipova tijekom kompajliranja i izbjegava "boxing".
  • 🤖 AI pomoć: GitHub Copilot scaffolira ArrayList kod, a ML.NET cjevovodi prosljeđuju podatke kroz C# tipove kolekcija.

C# ArrayList

Što je ArrayList u C#?

Kolekcija ArrayList je slična nizovi tip podataka u C#. Najveća razlika je dinamička priroda zbirke popisa polja.

Za nizove morate definirati broj elemenata koje niz može sadržavati u trenutku deklaracije niza. Ali u slučaju zbirke Array List, to ne treba učiniti unaprijed. Elementi se mogu dodati ili ukloniti iz kolekcije Array List u bilo kojem trenutku. Pogledajmo detaljnije operacije dostupne za kolekciju popisa polja.

Deklaracija popisa polja

Deklaracija ArrayList-a je navedena u nastavku. Popis polja kreira se uz pomoć tipa podataka ArrayList. Ključna riječ "new" koristi se za stvaranje objekta ArrayList-a. Objekt se zatim dodjeljuje varijabli a1. Sada će se varijabla a1 koristiti za pristup različitim elementima popisa polja.

ArrayList a1 = new ArrayList()

Dodavanje elemenata nizu

Metoda add koristi se za dodavanje elementa u ArrayList. Metoda dodavanja može se koristiti za dodavanje bilo koje vrste elementa tipa podataka na popis polja. Dakle, popisu polja možete dodati Integer, ili niz, ili čak Booleovu vrijednost. Opća sintaksa metode zbrajanja dana je u nastavku

ArrayList.add(element)

Ispod su neki primjeri kako se može koristiti metoda "dodaj". Metoda dodavanja može se koristiti za dodavanje različitih tipova podataka u kolekciju Array List.

U nastavku možete vidjeti primjere kako možemo dodati Integerove nizove, pa čak i Booleove vrijednosti u kolekciju Array List.

  • a1.add(1) – Ovo će kolekciji dodati Integer vrijednost
  • a1.add(“Primjer”) – Ovo će kolekciji dodati vrijednost niza
  • a1.add(true) – Ovo će kolekciji dodati Booleovu vrijednost

Sada da vidimo kako ovo radi na razini koda. Sav dolje navedeni kod bit će zapisan u našu konzolnu aplikaciju. Kod će biti zapisan u našu datoteku Program.cs.

U donjem programu napisat ćemo kod za stvaranje nove liste polja. Također ćemo pokazati za dodavanje elemenata i za prikaz elemenata popisa polja.

ArrayList u C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1[0]);	  
   Console.WriteLine(a1[1]);
   Console.WriteLine(a1[2]);
   Console.ReadKey();
  }
 }
}

Code Obrazloženje:-

  1. Prvi korak se koristi za deklariranje naše liste polja. Ovdje deklariramo a1 kao varijablu za držanje elemenata naše liste polja.
  2. Zatim koristimo ključnu riječ add za dodavanje broja 1, Stringa “Primjer” i Booleove vrijednosti 'true' na popis polja.
  3. Zatim koristimo metodu Console.WriteLine za prikaz vrijednosti svakog elementa popisa polja na konzoli. Primijetit ćete da baš kao i nizovima, elementima možemo pristupiti putem njihovih indeksnih pozicija. Dakle, za pristup prvoj poziciji popisa nizova koristimo poziciju indeksa [0]. I tako dalje.

Ako se gornji kod ispravno unese i program se pokrene, prikazat će se sljedeći izlaz.

Izlaz:

ArrayList u C#

Iz izlaza možete vidjeti da su svi elementi s popisa polja poslani na konzolu.

Pogledajmo još neke metode koje su dostupne kao dio ArrayList-a.

Računati

Ova se metoda koristi za dobivanje broja stavki u kolekciji ArrayList. Ispod je opća sintaksa ove izjave.

ArrayList.Count() – Ova metoda će vratiti broj elemenata koje sadrži popis polja.

sadrži

Ova se metoda koristi da se vidi je li element prisutan u kolekciji ArrayList. Ispod je opća sintaksa ove izjave

ArrayList.Contains(element) – Ova metoda će vratiti true ako je element prisutan na popisu, inače će vratiti false.

RemoveAt

Ova se metoda koristi za uklanjanje elementa na određenom mjestu u kolekciji ArrayList. Ispod je opća sintaksa ove izjave

ArrayList.RemoveAt(index) – Ova će metoda ukloniti element s određene pozicije popisa polja.

Sada da vidimo kako ovo radi na razini koda. Sav dolje navedeni kod bit će zapisan u našu konzolnu aplikaciju. Kod će biti zapisan u našu datoteku Program.cs.

U donjem programu napisat ćemo kod da vidimo kako možemo koristiti gore navedene metode.

ArrayList u C#

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add(1);
   a1.Add("Example");
   a1.Add(true);
   
   Console.WriteLine(a1.Count);
   Console.WriteLine(a1.Contains(2));
   Console.WriteLine(a1[1]);
   a1.RemoveAt(1);
   Console.WriteLine(a1[1]);
   Console.ReadKey();
  }
 }
}

Code Obrazloženje:-

  1. Dakle, prvo svojstvo koje vidimo je svojstvo Count. Dobivamo svojstvo Count popisa polja a1 i zatim ga zapisujemo u konzolu.
  2. U drugom dijelu koristimo metodu Contains da vidimo sadrži li ArrayList a1 element 2. Zatim rezultat upisujemo u konzolu putem naredbe Writeline.
  3. Konačno, kako bismo prikazali metodu uklanjanja elementa, izvodimo korake u nastavku,
    1. Prvo u konzolu upisujemo vrijednost elementa na poziciji indeksa 1 popisa polja.
    2. Zatim uklanjamo element na poziciji indeksa 1 popisa polja.
    3. Na kraju, ponovno upisujemo vrijednost elementa na poziciji indeksa 1 popisa polja u konzolu. Ovaj skup koraka dat će poštenu predodžbu hoće li metoda uklanjanja funkcionirati kako treba.

Ako se gornji kod ispravno unese i program se pokrene, prikazat će se sljedeći izlaz.

Izlaz:

ArrayList u C#

Zašto je zadnja vrijednost istinita?

Ako vidite slijed događaja, element Primjer se uklanja iz niza jer se nalazi na poziciji 1. Pozicija 1 u nizu zatim se zamjenjuje onim što je ranije bilo na poziciji 2 čija je vrijednost "true"

Kako proći kroz C# ArrayList

Čitanje svakog elementa ArrayLista je uobičajen zadatak. Budući da ArrayList pohranjuje svoje stavke kao objekte, možete ih posjetiti pomoću petlje foreach ili pomoću petlje for koja koristi svojstvo Count. Petlja foreach je najjednostavniji način, jer prolazi kroz svaku stavku redom bez potrebe za indeksom.

Primjer u nastavku stvara ArrayList nizova znakova i ispisuje svaku vrijednost u zasebnom retku. Kod je napisan u datoteci Program.cs konzolne aplikacije.

Korak 1) Uvezite imenski prostor System.Collections i stvorite ArrayList s tri stavke.

Korak 2) Koristite petlju foreach za čitanje svakog elementa kao objekta i zapisivanje istog u konzolu.

using System;
using System.Collections;

namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   ArrayList a1 = new ArrayList();
   a1.Add("Java");
   a1.Add("Python");
   a1.Add("Kotlin");
   foreach (object item in a1)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

Code Obrazloženje:-

  1. Imenski prostor System.Collections se uvozi tako da je tip ArrayList dostupan programu.
  2. Tri string vrijednosti se dodaju u ArrayList pomoću metode Add.
  3. Petlja foreach čita svaku stavku kao objekt, a metoda Console.WriteLine ispisuje je u novom retku.

Kada se program pokrene, ispisuje Java, Pythoni Kotlin u odvojenim retcima. Petlja for sa svojstvom Count dala bi isti rezultat, a istovremeno bi vam omogućila korištenje indeksne pozicije svakog elementa.

C# ArrayList metode i svojstva

Klasa ArrayList pruža mnoge ugrađene metode i svojstva za upravljanje svojim elementima. Osim dodavanja i uklanjanja elemenata, može sortirati, pretraživati ​​i obrnuti redoslijed u kolekciji. Najčešći članovi navedeni su u nastavku.

Član Description
dodati Dodaje jedan element na kraj ArrayList-a.
umetak Dodaje element na određenu poziciju indeksa.
ukloniti Uklanja prvo pojavljivanje određenog elementa.
RemoveAt Uklanja element na zadanoj poziciji indeksa.
Izbriši Uklanja sve elemente iz ArrayList-a.
Vrsta Sortira elemente u rastućem redoslijedu.
Reverse Reverses redoslijed elemenata na listi.
sadrži Vraća vrijednost true ako zadani element postoji na listi.
IndeksOd Vraća indeksnu poziciju zadanog elementa.
Računati Svojstvo koje vraća broj pohranjenih elemenata.
Kapacitet Svojstvo koje vraća broj elemenata koje lista može sadržavati.

Ovi članovi vam omogućuju dodavanje, pronalaženje, sortiranje i uklanjanje stavki bez vlastitog pisanja logike, što je jedna od glavnih prednosti korištenja kolekcije u odnosu na obični niz.

Razlika između ArrayLista i Lista u C#

I ArrayList i generički Popis pohranjuju skupinu stavki koje mogu rasti tijekom izvođenja, no razlikuju se u načinu na koji rukuju tipovima. Poznavanje razlike pomaže vam da odaberete pravu za moderni C# kod.

Glavne razlike navedene su u nastavku:

  • Sigurnost tipa: ArrayList pohranjuje svaku stavku kao objekt, dok je List vezan za jedan deklarirani tip i provjerava se tijekom kompajliranja.
  • Performance: ArrayList pakira i raspakirava vrijednosne tipove poput int, što oduzima vrijeme, dok List izbjegava pakiranje radi veće brzine.
  • Prostor: ArrayList se nalazi u System.Collections, dok se List nalazi u System.Collections.Generic.
  • lijevanje: Čitanje iz ArrayList-a često zahtijeva vraćanje u izvorni tip, ali List izravno vraća ispravan tip.
  • Preporuka: Microsoft preporučuje List za novi razvoj jer je sigurniji, brži i lakši za čitanje.

Ukratko, ArrayList je koristan za razumijevanje starijeg koda ili miješane pohrane, dok je List preferirani izbor za većinu današnjih aplikacija.

Pitanja i odgovori

Niz ima fiksnu veličinu i pohranjuje jedan skup tipova podataka prilikom deklaracije. ArrayList raste i smanjuje se tijekom izvođenja i pohranjuje svaku stavku kao objekt, tako da može sadržavati mješovite tipove podataka u jednoj listi.

ArrayList se ne uklanja, ali Microsoft ne preporučuje ga za novi razvoj. Generička klasa List u System.Collections.Generic je poželjnija jer dodaje sigurnost tipova i bolje performanse, pa većina modernog C# koda koristi List umjesto toga.

Budući da ArrayList pohranjuje stavke kao objekte, dodavanje vrijednosnog tipa kao što je int omotava ga u objekt, što je pakiranje. Čitanje natrag i pretvaranje u izvorni tip je raspakiranje. Oba koraka koštaju performanse, što List izbjegava.

ArrayList podržava nekoliko čitača odjednom, ali nije zajamčeno da će članovi instance biti sigurni u radu s više niti kada se kolekcija modificira. Za sigurno višenitno pisanje, omotajte ga s ArrayList-om.Synckroniziranu metodu ili umjesto toga koristiti istodobnu kolekciju.

Broj je broj elemenata trenutno pohranjenih u ArrayList-u. Kapacitet je ukupan broj elemenata koje može sadržavati prije promjene veličine. Kapacitet je uvijek jednak ili veći od broja i automatski raste kako dodajete elemente.

Stavke možete kopirati u Listu snažnog tipa pomoću metoda Cast i ToList ili pozvati metodu ToArray za dobivanje niza objekata. Pretvaranje u generičku Listu je uobičajeno jer vraća sigurnost tipova.

Da. GitHub Copilot može pisati deklaracije ArrayLista, dodavati i uklanjati pozive i petlje iz kratkog komentara ili naziva metode. Često predlaže i generičku verziju Lista, budući da je to preporučena kolekcija za novi C# kod.

ML.NET obično čita podatke za učenje putem generičkih kolekcija kao što su List i IEnumerable, koje se mapiraju na njegov IDataView cjevovod. Negenerički ArrayList rijetko se koristi izravno jer kolekcija snažnog tipa održava podatke strojnog učenja jasnima i sigurnima za tip.

Sažmite ovu objavu uz: