Turóczy Attila (MCT, MCP, MCTS) Livesoft Kft. A.NET Framework a gyűjtemény osztályok széles skáláját biztosítja a fejlesztők számára. NévLeírás ArrayListIndex.

Slides:



Advertisements
Hasonló előadás
Windows Virtualizáció
Advertisements

A Windows Azure egy skálázható számításifelhő-platform, amelyet a Microsoft hosztol a világ több pontján lévő adatközpontjaiban. Az Azure egyszerű,
KEVESEBB FELÜGYELET ÚJ ÜZLETI MODELLEK NAGYOBB TERMELÉKENYSÉG.
... manapság BizSpark WebsiteSpark Empower for ISVs MAPS (Web Solutions Toolkit ) Microsoft Partner Network Regisztrált szintCertified és Gold Certified.
Licencelés Kovács Nóra Ker-Soft Kft.
Windows Vista, 2007 Office Rendszer, Exchange Server 2007 termékbejelentés Vityi Péter Ügyvezető igazgató Microsoft Magyarország kft.
Programozás III KOLLEKCIÓK 2..
„AZ IT MAGÁN ÉS NYILVÁNOS ÉLETE” Avagy hogyan születik a BI iránt igény az IT üzemeltetésben Benkovics Viktor Vezető tanácsadó Microsoft Magyarország –
Windows Azure Infrastruktúra és platform a felhőben
Essential Business Server 2008 Szentgyörgyi Tibor NetAcademia oktatóközpont A nagytestvér.
Lehetőségek, felhasználható eszközök, eddigi tapasztalatok
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
JavaScript.
A Windows 7 automatizált telepítése Windows AIK használatával
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Kollekciók IO stream-ek Generikus kollekciók.  objektumokat tartalmaznak  nincsen előre meghatározott méretük, bármennyi objektumot pakolhatok beléjük.
Programozás II. 3. Gyakorlat C++ alapok.
A verem működése fpga-n
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
A CRM bevezetési projektek sajátosságai
A VoIP és a Microsoft Dynamics CRM Kondás János MCSA, MCSE, MCT System Builders Kft.
Nagy Levente Szoftverfejlesztési Szakértő Microsoft Magyarország Munkafolyamatok a 2007-es Office Rendszerben.
A felhő az üzleti vezető, a fejlesztő és az üzemeltető szemével A vállalati számító- központ kiterjesztése a felhőbe Biztonság és üzemeltetés a felhőben.
Lync 2010 újdonságok Microsoft Solution Partner Klub 2011 február 17 Szaniszló Tibor Termékmenedzser – Egységes Kommunikáció.
Ittzés Zsigmond Budapest Airport IT Infrastruktúra manager
Microsoft CRM online Strén András
Taletovics Márk Microsoft Magyarország. Mi van a csomagban?
Összetett adattípusok
Kőnig Tibor főmérnök Microsoft Magyarország
Rendelkezésre álló erőforrások pontos ismerete Kiosztott feladatok közel „valósidejű” követése Átláthatóság Tervezési folyamatok támogatása.
Listák, Vermek és Várakozási Sorok. Vermek Def: Egy sajátos lista amelyben minden beszúrási illetve törlési művelet csak a lista egyik végén történik.
Listák, Vermek és Várakozási Sorok
Budai Péter Szakmai és biztonsági vezető Microsoft Magyarország.
DFAN-INF-524 és DFAL-INF-524 kurzus hallgatói számára SZPISÁK TAMÁS / 2012.
V. Adatszerkezetek, kollekciók
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
1Szegedi Tudományegyetem Természettudományi és Informatikai KarAntal Gábor Programozás I. 8. gyakorlat.
Generics Krizsán Zoltán. Bemutató A.NET 2.0 verziótól. A.NET 2.0 verziótól. Típusparaméter Típusparaméter Más nyelvben ez a template (sablon). Más nyelvben.
Rugalmas, moduláris felépítés Rugalmas telepítés Jól tervezhető szerepkörök Folyamatos rendelkezésre állás Egyszerű felügyelet Elérés bárhonnan Postafiók.
A Microsoft Üzleti Intelligencia megoldása és platformja
Blog Fülöp Dávid MCT, MCPD Egy blog sémája Use Case-ek – Blog áttekintése – Egy blogpost megtekintése – Blogpost írása – Blogpost.
Christopher Chapman | MCT Content PM, Microsoft Learning, PDG Planning, Microsoft.
Ismerkedés az Active Directory-val
Vállalati infrastruktúra, mely minden igényt kielégít Felhasználóbarát eszközök és élmények.
Programozás II. labor 2. rész (Adatszerkezetek)
The information contained in this document represents the current view of Microsoft Corp on the issues discussed as of the date of publication. Because.
Kiss Tibor System Administrator (MCP) ISA Server 2006.
Farkas Bálint | Technical Evangelist | Microsoft.
Az {SQL Server 2008} Integration Services és Analysis Services újdonságai
Script nyelvek előadás
Skype for Business bevezetés és alközponti összeköttetés kialakítása
Algoritmusok és Adatszerkezetek I.
Farkas Bálint | Technical Evangelist | Microsoft
TechReady 22 6/25/2018 © 2015 Microsoft Corporation. All rights reserved. Microsoft, Windows, and other product names are or may be registered trademarks.
Blockchain…de mi hajtja?
Angular 2: Mi van a csokoládésdobozban?
WS16 TP4 újdonságok Gál Tamás Budapest Sysadmin Meetup
Tömegközlekedés, közszállítás Nagyváradon
A nagyváradi villamoshálózat modernizációjáról
Microsoft Azure Marketplace & Microsoft Azure Certified program
9/8/2018 9:39 PM Despre modernizarea sistemului de transport public urban cu tractiune electrica Csuzi István director general ORADEA TRANSPORT LOCAL.
A nagyváradi villamosok megbízhatósági modellezése
„Agilis-e vagy?” – egy váltókezelő naplója
HWSW Meetup – Felhő és ami mögötte van
Build /24/2019 © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION.
Függvénysablonok használata
Előadás másolata:

Turóczy Attila (MCT, MCP, MCTS) Livesoft Kft

A.NET Framework a gyűjtemény osztályok széles skáláját biztosítja a fejlesztők számára. NévLeírás ArrayListIndex alapú, dinamikus méretű SortedListRendezett, érték/név párok QueueFIFO tárolás StackLIFO tárolás HashtableÉrték/név párok, kulcs szerinti hozzáférés BitArrayBool értékek gyűjteménye StringCollectionDinamikus string gyűjtemény StringDictionaryMint a Hashtable, kizárólag string párok ListDictionaryKis méretű listák név/érték párok HybridDictionaryHa kicsi, akkor ListDictionary, ha nagy, akkor Hashtable NameValueCollectionNév/érték párok, kulcs alapú hozzáférés, stringeket tárol

Alapvető gyűjtemények Soros listák Dictionaryk Speciális gyűjtemények Generikus adatszerkezet

Az ArrayList egy egyszerű, nem rendezet konténer, objektumok számára. – Dinamikusan méretű – Objectek tárolása (boxing/unboxing) – Indexelt

Elem felvétele: Add(elem) – Csak 1 elem felvétele AddRange(elemek) – Több elem felvétele Az elem bármilyen objektum lehet! Boxing/Unboxing Az AddRange-l bármilyen tömböt átadhatunk (Ami megvalósítja az ICollection interfacet) ArrayList myArray = new ArrayList(); string s = "Hello"; myArray.Add(s); myArray.Add("Hi"); myArray.Add(50); myArray.Add(new object()); string[] anArray = new string[] { "London", "Budapest", "New York" }; myArray.AddRange(anArray);

A beszúrást az Insert és az InsertRange metódusok segítségével történhet. Az Insertel egy míg az InsertRangel több elemet szúrhatunk be az ArrayListbe myArray.Insert(3, "BeszurtElem"); String[] beszurtandoElemek = new String[] {"Opera", "Firefox", "IE8"}; myArray.InsertRange(4, beszurandoElemek);

Az elemek beszúrása és lekérdezése történhet indexerek segítségével is. //Elem hozzáadása myArray[1] = "Hello"; //Elem lekérdezése Console.WriteLine(myArray[1]); Ha egy olyan indexű helyre akarunk elemet beszúrni, ahol már létezik egy elem, akkor azt felülírja!

Elem törlése Remove az adott elemet törli RemoveAt az adott indexű elemet törli RemoveRange (offset, count) egy adott tartományt törölhetünk ki a segítségével. myArray.Remove("IE8"); myArray.RemoveAt(2); myArray.RemoveRange(0, 2); Amennyiben a Remove -nak átadott elem nincs a listában nincs hibaüzenet! Olyan mintha rendesen lefutott volna a művelet!

Egyéb hasznos tagfüggvények IndexOf(elem) – Az elem indexét adja vissza. Ha nem találja -1 el tér vissza. Clear() – Töröljük az ArrayList összes elemét Contains(elem) – Megállapíthatjuk, hogy az adott elem benne található-e az ArrayListben. String myString = "My String"; if(myArray.Contains(myString)) { int index = myArray.IndexOf(myString); myArray.RemoveAt(index); } else { myArray.Clear(); }

//Létrehozás és elemenként beszúrás ArrayList myArray = new ArrayList(); myArray.Add("Hi"); myArray.Add(3.2); myArray.Add(new object()); //Több elem beszúrása myArray.AddRange(new object[] { "vmi", new ArrayList(), 7 }); //Beszúrás Insert és InsertRange myArray.Insert(3, "Hi again"); myArray.InsertRange(8, new string[] { "egy", "kettő" }); //Eltávolítás Remove, RemoveAt és RemoveRange-el myArray.Remove("Hi again"); myArray.RemoveAt(2); myArray.RemoveRange(0, 3);

Az ArrayList megvalósítja az IEnumerable interface-t. IEnumerator enumerator = myArray.GetEnumerator(); while (enumerator.MoveNext()) { Console.WriteLine(enumerator.Current); } foreach (object item in myArray) { Console.WriteLine(item); }

Alapvető gyűjtemények Soros listák Dictionaryk Speciális gyűjtemények Generikus adatszerkezet

FIFO (First-in, First-out) elvű lista Az elem bármilyen objektum lehet! Boxing/Unboxing Poperty-k Count – A Queue-ban lévő elemek száma Tagfüggvényei Dequeue() – Elem kivétele a Queue-ból, és annak eltávolítása Enqueue() – Elem hozzáadása. (Végére kerül) Peek() – Elem kivétele a Queue-ból DE NEM távolítja el az elemet a Queue-ból!

Queue q = new Queue(); //Elem hozzáadása q.Enqueue("1 elem"); //Elem kivétele Console.WriteLine(q.Dequeue()); Queue queue = new Queue(); queue.Enqueue("Első"); queue.Enqueue("Második"); queue.Enqueue("Harmadik"); queue.Enqueue("Negyedik"); while (queue.Count > 0) { Console.WriteLine(queue.Dequeue()); }

LIFO (Last-in, First-out) rendszerű lista Az elem bármilyen objektum lehet! Boxing/Unboxing Property-k: Count – A Stackben lévő elemek száma Tagfüggvények: Pop() – A Stack legfelső elemének kivétele, és annak eltávolítása. Push() – Elem hozzáadása. (Stack tetejére kerül) Peek() – A legfelső elem kivétele a Stackből, DE NEM törlődik a Stackből

Stack s = new Stack(); //Elem hozzáadása s.Push("1 elem"); //Elem kivétele Console.WriteLine(s.Pop()); Stack stack = new Stack(); stack.Push("Első"); stack.Push("Második"); stack.Push("Harmadik"); stack.Push("Negyedik"); while (stack.Count > 0) { Console.WriteLine(stack.Pop()); }

Alapvető gyűjtemények Soros listák Dictionaryk Speciális gyűjtemények Generikus adatszerkezet

A Dictionary gyűjtemények Kulcs -> érték pár alapú listák Pl: Hashtable, SortedList, HybridDictionary, OrderedDictionary A Hashtable – Index szintaktikájú hozzáférés – Kulcs alapú hozzáférés – Elem hozzáadása: Add(kulcs, elem) Ht[kulcs] = elem

Iteráció foreach-csel: – A hashtábla elemei nem objectek, hanem DictionaryEntry-k!!! – Hozzáférés entry.Value és entry.Key-el Tagfüggvény: – ContainsKey(), ContainsValue() IDictionary Interface – Olyan, mint az IList, csak Hashtáblákra. – Itt az index helyett [”key”]-t használunk – Add(kulcs, ertek), Clear(), Contains(), Remove()

Hashtáblában az egyenlőség eldöntése – GetHashCode() (object-től) – Equals() – String GetHashCode() fgv-e felül van definiálva – Teendő: Nekünk is felül kell definiálni az objekutumaink GetHashCode és Equals függvényét

SortedList – Olyan, mint a Hashtábla, csak kulcs szerint rendez beszúráskor és tud indexelni!!! – Fontosabb metódusok: NévLeírás GetByIndexElem kiolvasása index alapján GetKeyKulcs kiolvasása index alapján GetKeyListKulcsok rendezett listájával tér vissza GetValueListAz értékek listájával tér vissza IndexOfKeyAdott kulcsú elem indexe IndexOfValueElem indexe SetByIndexElem beállítása index alapján

ListDictionary – Használata megegyezik a hashtáblával – A felszín alatt egy array lapul – Hashtáblánál nagy az overhead – Hatékonyabb kisebb listáknál HybridDictionary – Kis tábláknál ListDictionary-ként működik, ha az elemszám elég nagy, Hashtáblára migrál. – Akkor érdemes használni ha éles a listák mérete közti különbség (kis listák és nagyon nagy listák)

OrderedDictionary – A hashtábláknál gond a rendezés – Van indexelés – Nem csak kulcs alapján tud rendezni(mint a – SortedList) – Olyan, mint a hashtable, csak tud rendezni – Tagfüggvényei: Insert(index, key, value) RemoveAt(index) A specializált gyűjtemények névtere: – System.Collections.Specialized

Specializált Dictionary-k használata

String specifikus gyűjtemények – StringCollection Dinamikus Az arraylist kizárólag stringekre alkalmazható változata Nincs többé visszacast – StringDictionary Olyan, mint a Hashtábla, de csak string lehet a kulcs és az érték is. Nincs többé castolásra szükség! Case Insensitive!

Case-Insensitive gyűjtemények – CollectionsUtil class CreateCaseInsensitiveHashtable() CreateCaseInsensitiveSortedList() Culture-Invariant gyűjtemények – Hashtable és SortedList konstrukor paramétere egy StringComparer object – StringComparer object InvariantCulture InvariantCultureIgnoreCase

NameValueCollection – Kulcs és érték is csak string lehet – Egy kulcshoz, több érték is tartozhat – Index és kulcs alapú hozzáférés – Elem beszúrása: Add(”key”, ”value”) Indexerrel: – nvc[”key”] = ”value” – Az indexer felülírja az előző értéket!!! – Elem kiolvasása: String[] values = nvc.GetValues(”key”);

Alapvető gyűjtemények Soros listák Dictionaryk Speciális gyűjtemények Generikus adatszerkezet

Mire jó? – boxing/unboxing vs Generics teljesítmény – Típus biztonság Az eddigi gyűjteményeink helyett ha lehet használjunk generikus gyűjteményeket A.NET erősen támogatja a generics-et, nem kell nekünk bajlódni az elkészítéssel. Hozzáféréskor nem kell törődnünk a visszacastolással.

Olyan, mint az ArrayList, csak típusos! List intList = new List (); A lista elemei, nem objektek! Ugyanúgy van Add, Sort is

Queue<> – Queue q = new Queue () – Mint a nem generikus, de: Kivételkor már nincs szükség castolásra Stack<> – Stack s = new Stack () – Mint a nem generikus, de a pop() már nem objectet ad vissza (pl. itt double-t)

Dictionary<> – Leginkább a Hashtable-re, a ListDictionary-re és a HybridDictionary-re hasonlít. – Kulcs/érték párokat tárol. – Indexer szintaktikával adhatunk hozzá elemekét illetve férhetünk hozzájuk. – NEM DictionaryEntry-t tárol!!! – KeyValuePair -t tartlamaz

Dictionary<> használata és iterálása

A LinkedList osztály fontosabb metódusai: NévLeírás AddAfterEgy már létező node-után szúr be AddBeforeA node elé szúr be AddFirstA lista elejére beszúr egy node-ot AddLastA lista végére beszúr egy node-ot FindAz első node, amelyik tartalmazza a megadott értéket FindLastAz utolsó, amelyik még tartalmazza a megadott értéket RemoveTörli az első node-t, amelyik tartalmazza a megadott értéket. RemoveFirstTörli az első node-ot RemoveLastTörli az utolsó node-ot

– IList és ICollection nulláról – Sok munka megspórolható CollectionBase – IList, ICollection, IEnumerable ReadOnlyCollectionBase – Ua. mint CollectionBase, de a user számára DictionaryBase – IDictionary, IEnumerable, ICollection

SortedList<> és SortedDictionary<> Ugyanúgy működnek, mint a Dictionary<>, csak rendezve tárolják az elemeiket Generikus láncolt lista (LinkedList) – Hasznos, ha fontos az objektumok kapcsolódása – Elemei: LinkedListNode-ok – Fontosabb Poperty-k: Count, First, Last

© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.