C# ArrayList bemutató példákkal

⚡ Okos összefoglaló

A C#-ban található ArrayList egy dinamikus gyűjtemény a System.Collections névtérből, amely objektumokként tárolja az elemeket. A tömbökkel ellentétben futásidőben növekszik és zsugorodik, és egyetlen listában képes egész számokat, karakterláncokat és logikai értékeket együtt tárolni.

  • 🔄 Dinamikus méretezés: Az ArrayList futásidőben ad hozzá és távolít el elemeket, így nem rögzíted előre az elemek számát, mint egy tömb esetében.
  • 📦 Objektum tárolása: Minden elem objektumként tárolódik, így egy ArrayList vegyes adattípusokat, például int, string és bool értékeket tárolhat.
  • Alapvető módszerek: Az Add, Insert, Remove, RemoveAt, Contains és Sort műveletek az ArrayList-eken végzett mindennapi műveleteket fedik le.
  • 📊 Darabszám és kapacitás: A Count tulajdonság az elemek aktuális számát adja vissza, míg a Capacity a lefoglalt tárhelyet.
  • Modern választás: Microsoft az új kódhoz az általános List használatát javasolja, mivel az fordítási idejű típusbiztonságot nyújt és elkerüli a dobozolást.
  • 🤖 AI segítség: A GitHub Copilot ArrayList kódot állít össze, az ML.NET folyamatok pedig C# gyűjteménytípusokon keresztül továbbítják az adatokat.

C# tömblista

Mi az ArrayList a C#-ban?

Az ArrayList gyűjtemény hasonló a tömbök adattípus C#-ban. A legnagyobb különbség a tömblista-gyűjtemény dinamikus jellegében rejlik.

Tömbök esetén meg kell határozni azon elemek számát, amelyeket a tömb tartalmazhat a tömb deklarációja idején. De az Array List gyűjtemény esetében ezt nem kell előre megtenni. Az elemek bármikor hozzáadhatók vagy eltávolíthatók a Tömblista gyűjteményből. Nézzük meg részletesebben a tömblista gyűjteményhez elérhető műveleteket.

Egy tömblista deklarációja

Az ArrayList deklarációja alább található. Egy tömblista az ArrayList Datatype segítségével jön létre. Az „új” kulcsszó egy ArrayList objektum létrehozására szolgál. Az objektumot ezután az a1 változóhoz rendeljük. Így most az a1 változót fogják használni a tömblista különböző elemeinek eléréséhez.

ArrayList a1 = new ArrayList()

Elemek hozzáadása egy tömbhöz

Az add metódus egy elem hozzáadására szolgál az ArrayList-hez. Az add metódus használható bármilyen adattípus elem hozzáadásához a tömblistához. Így hozzáadhat egész számot, karakterláncot, vagy akár logikai értéket a tömblistához. Az összeadási módszer általános szintaxisát az alábbiakban adjuk meg

ArrayList.add(element)

Az alábbiakban bemutatunk néhány példát az „add” módszer használatára. Az add metódus segítségével különféle adattípusokat adhatunk a tömblista gyűjteményhez.

Az alábbiakban példákat láthat arra, hogyan adhatunk egész szám karakterláncokat, sőt logikai értékeket is a tömblista gyűjteményhez.

  • a1.add(1) – Ez egész számot ad a gyűjteményhez
  • a1.add("Példa") – Ez egy karakterlánc-értéket ad a gyűjteményhez
  • a1.add(true) – Ez logikai értéket ad a gyűjteményhez

Lássuk, hogyan működik ez kód szinten. Az összes alább említett kód be lesz írva a konzolalkalmazásunkba. A kód a Program.cs fájlunkba kerül.

Az alábbi programban megírjuk a kódot egy új tömblista létrehozásához. Megjelenítjük az elemek hozzáadását és a Tömb lista elemeinek megjelenítését is.

ArrayList C#-ban

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 Magyarázat:-

  1. Az első lépés a tömblistánk deklarálására szolgál. Itt az a1-et deklaráljuk változóként, amely a tömblistánk elemeit tartalmazza.
  2. Ezután az add kulcsszóval hozzáadjuk az 1-es számot, az „Example” karakterláncot és a „true” logikai értéket a tömblistához.
  3. Ezután a Console.WriteLine metódussal jelenítjük meg az egyes tömblistaelemek értékét a konzolon. Észreveheti, hogy a tömbökhöz hasonlóan az elemeket az indexpozíciókon keresztül érhetjük el. Tehát a tömblista első pozíciójának eléréséhez a [0] indexpozíciót használjuk. És így tovább, és így tovább.

Ha a fenti kódot megfelelően adta meg és a program lefut, a következő kimenet jelenik meg.

output:

ArrayList C#-ban

A kimenetből láthatja, hogy a tömblista összes eleme elküldésre kerül a konzolra.

Nézzünk meg néhány további módszert, amelyek az ArrayList részeként állnak rendelkezésre.

Gróf

Ez a módszer az ArrayList gyűjtemény elemeinek számának lekérésére szolgál. Az alábbiakban ennek az állításnak az általános szintaxisa látható.

ArrayList.Count() – Ez a metódus a tömblista által tartalmazott elemek számát adja vissza.

tartalmaz

Ezzel a módszerrel ellenőrizhető, hogy egy elem megtalálható-e az ArrayList gyűjteményben. Az alábbiakban ennek az állításnak az általános szintaxisa látható

ArrayList.Contains(element) – Ez a metódus igazat ad vissza, ha az elem szerepel a listában, ellenkező esetben false értéket ad vissza.

RemoveAt

Ez a módszer az ArrayList gyűjtemény egy adott pozíciójában lévő elem eltávolítására szolgál. Az alábbiakban ennek az állításnak az általános szintaxisa látható

ArrayList.RemoveAt(index) – Ez a módszer eltávolít egy elemet a tömblista egy adott helyéről.

Lássuk, hogyan működik ez kód szinten. Az összes alább említett kód be lesz írva a konzolalkalmazásunkba. A kód a Program.cs fájlunkba kerül.

Az alábbi programban megírjuk a kódot, hogy megnézzük, hogyan tudjuk használni a fent említett módszereket.

ArrayList C#-ban

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 Magyarázat:-

  1. Tehát az első tulajdonság, amit látunk, a Count tulajdonság. Megkapjuk az a1 tömblista Count tulajdonságát, majd beírjuk a konzolba.
  2. A második részben a Contains metódussal nézzük meg, hogy az ArrayList a1 tartalmazza-e a 2. elemet. Ezután a Writeline paranccsal beírjuk az eredményt a konzolba.
  3. Végül az Elem eltávolítása módszer bemutatása érdekében az alábbi lépéseket hajtjuk végre:
    1. Először a tömblista Index 1. pozíciójában lévő elem értékét írjuk be a konzolba.
    2. Ezután eltávolítjuk a tömblista 1. Index pozíciójában lévő elemet.
    3. Végül ismét felírjuk a konzolba a tömblista Index 1. pozíciójában lévő elem értékét. Ez a lépéskészlet pontos képet ad arról, hogy az eltávolítási módszer megfelelően működik-e.

Ha a fenti kódot megfelelően adta meg és a program lefut, a következő kimenet jelenik meg.

output:

ArrayList C#-ban

Miért igaz az utolsó érték?

Ha látja az események sorozatát, akkor a Példa elemet eltávolítjuk a tömbből, mert ez az 1. pozícióban van. A tömb 1. pozíciója ezután lecserélődik arra, ami korábban a 2. pozícióban volt, amelynek értéke "true"

Hogyan cikluson keresztül lehet futtatni egy C# tömblistát

Egy ArrayList minden elemének beolvasása gyakori feladat. Mivel egy ArrayList objektumként tárolja az elemeit, azokat egy foreach ciklussal vagy egy Count tulajdonságot használó for ciklussal látogathatjuk meg. A foreach ciklus a legegyszerűbb módja, mivel index nélkül, sorban végigmegy az egyes elemeken.

Az alábbi példa egy karakterláncokból álló ArrayList tömböt hoz létre, és minden értéket külön sorban ír ki. A kód egy konzolalkalmazás Program.cs fájljában található.

Step 1) Importáld a System.Collections névteret, és hozz létre egy három elemmel rendelkező ArrayList tömböt.

Step 2) Használj egy foreach ciklust, hogy minden elemet objektumként olvass be, és a konzolra írj.

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 Magyarázat:-

  1. A System.Collections névtér importálva van, így az ArrayList típus elérhetővé válik a program számára.
  2. Három karakterlánc értéket adunk az ArrayListhez az Add metódussal.
  3. A foreach ciklus minden elemet objektumként olvas be, és a Console.WriteLine metódus új sorba írja ki.

Amikor a program fut, kinyomtatja Java, Pythonés Kotlin külön sorokban. Egy Count tulajdonsággal rendelkező for ciklus ugyanazt az eredményt adná, miközben lehetővé tenné az egyes elemek indexpozíciójának használatát.

C# ArrayList metódusok és tulajdonságok

Az ArrayList osztály számos beépített metódust és tulajdonságot kínál az elemeinek kezeléséhez. Az elemek hozzáadásán és eltávolításán túl rendezheti, keresheti és megfordíthatja a gyűjteményt. A leggyakoribb tagok listája alább látható.

Tag Leírás
hozzáad Egyetlen elemet ad hozzá az ArrayList végéhez.
betétlap Hozzáad egy elemet egy adott indexpozícióhoz.
eltávolít Eltávolítja egy adott elem első előfordulását.
RemoveAt Eltávolítja az elemet a megadott indexpozíciónál.
Szűrő kikapcsolása Eltávolítja az összes elemet az ArrayList-ből.
Fajta Növekvő sorrendbe rendezi az elemeket.
Reverse Reverses az elemek sorrendje a listában.
tartalmaz Igaz értéket ad vissza, ha egy adott elem létezik a listában.
IndexOf Visszaadja egy adott elem indexpozícióját.
Gróf Tulajdonság, amely visszaadja a tárolt elemek számát.
Kapacitás Tulajdonság, amely visszaadja a lista elemeinek számát.

Ezek a tagok lehetővé teszik elemek hozzáadását, keresését, rendezését és eltávolítását anélkül, hogy saját magad írnád a logikát, ami a gyűjtemények használatának egyik fő előnye egy egyszerű tömbbel szemben.

Különbség az ArrayList és a List között C#-ban

Mind egy ArrayList, mind egy általános Lista olyan elemcsoportokat tárol, amelyek futásidőben növekedhetnek, mégis különböznek abban, hogyan kezelik a típusokat. A különbség ismerete segít a megfelelő kiválasztásában a modern C# kódhoz.

A fő különbségek az alábbiakban felsorolva vannak:

  • Típusbiztonság: Egy ArrayList minden elemet objektumként tárol, míg egy List egy deklarált típushoz van kötve, és fordítási időben kerül ellenőrzésre.
  • Teljesítmény: Egy ArrayList bedobozolja és kibontja az olyan értéktípusokat, mint az int, ami időigényes, míg egy List a jobb sebesség érdekében elkerüli a bedobozolást.
  • Névtér: Az ArrayList a System.Collections, míg a List a System.Collections.Generic fájlban található.
  • öntés: Egy ArrayList-ből való olvasás gyakran vissza kell térni az eredeti típusra, de egy List közvetlenül a helyes típust adja vissza.
  • Ajánlás: Microsoft a Listet ajánlja új fejlesztésekhez, mert biztonságosabb, gyorsabb és könnyebben olvasható.

Röviden, egy ArrayList hasznos a régebbi kód vagy a vegyes típusú tárolás megértéséhez, míg a List a legtöbb alkalmazáshoz ma az előnyben részesített választás.

GYIK

Egy tömbnek fix a mérete, és egy adattípus-készletet tárol a deklaráláskor. Egy ArrayList futásidőben növekszik és zsugorodik, és minden elemet objektumként tárol, így vegyes adattípusokat is tárolhat egyetlen listában.

Az ArrayList nem törlődik, de Microsoft nem ajánlja új fejlesztésekhez. A System.Collections.Generic fájlban található általános List osztályt részesítik előnyben, mivel típusbiztonságot és jobb teljesítményt nyújt, ezért a legtöbb modern C# kód List osztályt használ helyette.

Mivel egy ArrayList objektumként tárolja az elemeket, egy értéktípus, például az int hozzáadása egy objektumba csomagolja azt, ami dobozolás. A visszaolvasás és az eredeti típusra konvertálás a kicsomagolás. Mindkét lépés teljesítménycsökkenést okoz, amit a List elkerül.

Egy ArrayList több olvasót is támogat egyszerre, de a példánytagok szálbiztossága nem garantált, amikor a gyűjtemény módosítva van. A biztonságos többszálú íráshoz csomagold be az ArrayList-tel.Synchronizált módszert, vagy használjon inkább egyidejű gyűjtést.

A Count (darab) az ArrayList-ben jelenleg tárolt elemek száma. A Capacity (kapacitás) az elemek teljes száma, amelyet a lista átméretezése előtt tárolni tud. A Capacity (kapacitás) mindig egyenlő vagy nagyobb, mint a Count (darab), és automatikusan növekszik az elemek hozzáadásával.

Az elemeket egy erősen típusozott listába másolhatod a Cast és a ToList metódusokkal, vagy meghívhatod a ToArray metódust egy objektumtömb előállításához. Az általános listává konvertálás gyakori, mivel visszaállítja a típusbiztonságot.

Igen. A GitHub Copilot képes ArrayList deklarációk írására, hívások hozzáadására és eltávolítására, valamint ciklusok létrehozására egy rövid megjegyzésből vagy metódusnévből. Gyakran javasolja az általános List verziót is, mivel ez az ajánlott gyűjtemény az új C# kódhoz.

Az ML.NET általában általános gyűjteményeken, például List és IEnumerable gyűjteményeken keresztül olvassa a betanítási adatokat, amelyek az IDataView folyamatához vannak leképezve. A nem általános ArrayList listákat ritkán használják közvetlenül, mivel egy erősen típusos gyűjtemény tisztán és típusbiztosan tartja a gépi tanulási adatokat.

Foglald össze ezt a bejegyzést a következőképpen: