Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java - Collecties Framework

Voorafgaand aan Java 2 bood Java ad-hocklassen zoals Woordenboek, Vector, Stapel, en Eigenschappen om groepen objecten op te slaan en te manipuleren. Hoewel deze lessen heel nuttig waren, misten ze een centraal, verbindend thema. De manier waarop u Vector gebruikte, was dus anders dan de manier waarop u Eigenschappen gebruikte.

Het collectiekader is ontworpen om verschillende doelen te bereiken, zoals −

  • Het raamwerk moest high-performance zijn. De implementaties voor de fundamentele collecties (dynamische arrays, gekoppelde lijsten, bomen en hashtabellen) moesten zeer efficiënt zijn.

  • Het raamwerk moest ervoor zorgen dat verschillende soorten collecties op een vergelijkbare manier en met een hoge mate van interoperabiliteit zouden kunnen werken.

  • Het raamwerk moest een collectie eenvoudig uitbreiden en/of aanpassen.

Hiertoe is het hele collectieframework ontworpen rond een reeks standaardinterfaces. Verschillende standaard implementaties zoals LinkedList, HashSet, en TreeSet , van deze interfaces zijn voorzien die u kunt gebruiken zoals ze zijn en u kunt ook uw eigen verzameling implementeren, als u daarvoor kiest.

Een collectieframework is een uniforme architectuur voor het representeren en manipuleren van collecties. Alle collectieframeworks bevatten de volgende −

  • Interfaces − Dit zijn abstracte gegevenstypen die verzamelingen vertegenwoordigen. Dankzij interfaces kunnen collecties worden gemanipuleerd, onafhankelijk van de details van hun representatie. In objectgeoriënteerde talen vormen interfaces over het algemeen een hiërarchie.

  • Implementaties, d.w.z. klassen − Dit zijn de concrete implementaties van de collectie-interfaces. In wezen zijn het herbruikbare datastructuren.

  • Algoritmen − Dit zijn de methoden die nuttige berekeningen uitvoeren, zoals zoeken en sorteren, op objecten die verzamelingsinterfaces implementeren. Er wordt gezegd dat de algoritmen polymorf zijn:dat wil zeggen dat dezelfde methode kan worden gebruikt op veel verschillende implementaties van de juiste collectie-interface.

Naast collecties definieert het raamwerk verschillende kaartinterfaces en klassen. Maps slaan sleutel/waarde-paren op. Hoewel kaarten geen verzamelingen zijn in het juiste gebruik van de term, maar ze zijn volledig geïntegreerd met collecties.

De collectie-interfaces

Het collectiekader definieert verschillende interfaces. Deze sectie geeft een overzicht van elke interface −

Zr.nr. Interface en beschrijving
1 De collectie-interface

Hierdoor kun je met groepen objecten werken; het staat bovenaan de collectiehiërarchie.

2 De lijstinterface

Dit breidt Collectie uit en een instantie van List slaat een geordende verzameling elementen op.

3 De set

Dit breidt de collectie uit met handgrepensets, die unieke elementen moeten bevatten.

4 De gesorteerde set

Dit breidt Set uit om gesorteerde sets te verwerken.

5 De kaart

Dit koppelt unieke sleutels aan waarden.

6 De kaart.Entry

Dit beschrijft een element (een sleutel/waarde-paar) in een kaart. Dit is een innerlijke klasse van Map.

7 De gesorteerde kaart

Dit breidt de kaart uit zodat de sleutels in oplopende volgorde worden onderhouden.

8 De opsomming

Deze legacy-interface definieert de methoden waarmee u de elementen in een verzameling objecten kunt opsommen (één tegelijk verkrijgen). Deze verouderde interface is vervangen door Iterator.

De Collectieklassen

Java biedt een reeks standaard verzamelingsklassen die verzamelingsinterfaces implementeren. Sommige klassen bieden volledige implementaties die kunnen worden gebruikt zoals ze zijn en andere zijn abstracte klassen, die skeletimplementaties bieden die worden gebruikt als startpunten voor het maken van concrete verzamelingen.

De standaard collectieklassen zijn samengevat in de volgende tabel −

Zr.nr. Klasse en beschrijving
1

Abstracte Verzameling

Implementeert het grootste deel van de collectie-interface.

2

AbstractLijst

Breidt AbstractCollection uit en implementeert het grootste deel van de List-interface.

3

AbstractSequentialList

Breidt AbstractList uit voor gebruik door een verzameling die sequentiële in plaats van willekeurige toegang tot de elementen ervan gebruikt.

4 Gelinkte lijst

Implementeert een gekoppelde lijst door AbstractSequentialList uit te breiden.

5 ArrayLijst

Implementeert een dynamische array door AbstractList uit te breiden.

6

AbstractSet

Breidt AbstractCollection uit en implementeert het grootste deel van de Set-interface.

7 HashSet

Breidt AbstractSet uit voor gebruik met een hashtabel.

8 GelinkteHashSet

Breidt HashSet uit om iteraties van invoegvolgorde mogelijk te maken.

9 BoomSet

Implementeert een set die is opgeslagen in een boom. Breidt AbstractSet uit.

10

Abstracte kaart

Implementeert het grootste deel van de kaartinterface.

11 HashMap

Breidt AbstractMap uit om een ​​hashtabel te gebruiken.

12 Boomkaart

Breidt AbstractMap uit om een ​​boom te gebruiken.

13 WeakHashMap

Breidt AbstractMap uit om een ​​hashtabel met zwakke toetsen te gebruiken.

14 LinkedHashMap

Breidt HashMap uit om iteraties van invoegvolgorde mogelijk te maken.

15 IdentityHashMap

Breidt AbstractMap uit en gebruikt referentie-gelijkheid bij het vergelijken van documenten.

De AbstractCollection, AbstractSet, AbstractList, AbstractSequentialList en Abstracte kaart klassen bieden skeletimplementaties van de kerncollectie-interfaces, om de inspanning die nodig is om ze te implementeren te minimaliseren.

De volgende legacy-klassen gedefinieerd door java.util zijn besproken in het vorige hoofdstuk −

Zr.nr. Klasse en beschrijving
1 Vector

Dit implementeert een dynamische array. Het is vergelijkbaar met ArrayList, maar met enkele verschillen.

2 Stapel

Stack is een subklasse van Vector die een standaard last-in, first-out stack implementeert.

3 Woordenboek

Dictionary is een abstracte klasse die een opslagplaats voor sleutels/waarden vertegenwoordigt en ongeveer hetzelfde werkt als Map.

4 Hashtabel

Hashtable was onderdeel van de originele java.util en is een concrete implementatie van een Dictionary.

5 Eigenschappen

Eigenschappen is een subklasse van Hashtable. Het wordt gebruikt om zoeklijsten bij te houden waarin de sleutel een String is en de waarde ook een String.

6 BitSet

Een BitSet-klasse maakt een speciaal type array dat bitwaarden bevat. Deze array kan indien nodig groter worden.

De verzamelingsalgoritmen

Het collectiekader definieert verschillende algoritmen die kunnen worden toegepast op collecties en kaarten. Deze algoritmen zijn gedefinieerd als statische methoden binnen de klasse Collections.

Verschillende methoden kunnen een ClassCastException . veroorzaken , die optreedt wanneer een poging wordt gedaan om incompatibele typen te vergelijken, of een UnsupportedOperationException , die optreedt wanneer een poging wordt gedaan om een ​​niet-aanpasbare verzameling te wijzigen.

Collecties definiëren drie statische variabelen:EMPTY_SET, EMPTY_LIST en EMPTY_MAP. Ze zijn allemaal onveranderlijk.

Zr.nr. Algoritme en beschrijving
1 De verzamelingsalgoritmen

Hier is een lijst van alle algoritme-implementaties.

Hoe een iterator gebruiken?

Vaak wil je door de elementen in een verzameling bladeren. U wilt bijvoorbeeld elk element weergeven.

De eenvoudigste manier om dit te doen, is door een iterator te gebruiken, een object dat ofwel de Iterator- of de ListIterator-interface implementeert.

Iterator stelt u in staat om door een verzameling te bladeren, elementen te verkrijgen of te verwijderen. ListIterator breidt Iterator uit om bidirectionele doorgang van een lijst en de wijziging van elementen mogelijk te maken.

Zr.nr. Iteratormethode en beschrijving
1 Java Iterator gebruiken

Hier is een lijst van alle methoden met voorbeelden die worden geleverd door de interfaces Iterator en ListIterator.

Hoe gebruik je een vergelijker?

Zowel TreeSet als TreeMap slaan elementen op in een gesorteerde volgorde. Het is echter de comparator die precies definieert welke gesorteerde volgorde betekent.

Met deze interface kunnen we een bepaalde verzameling op een aantal verschillende manieren sorteren. Deze interface kan ook worden gebruikt om instanties van elke klasse te sorteren (zelfs klassen die we niet kunnen wijzigen).

Zr.nr. Iteratormethode en beschrijving
1 Java-vergelijker gebruiken

Hier is een lijst van alle methoden met voorbeelden van Comparator Interface.

Samenvatting

Het Java-verzamelingsraamwerk geeft de programmeur toegang tot voorverpakte gegevensstructuren en tot algoritmen om ze te manipuleren.

Een collectie is een object dat verwijzingen naar andere objecten kan bevatten. De collectie-interfaces declareren de bewerkingen die kunnen worden uitgevoerd op elk type collectie.

De klassen en interfaces van het collectieframework bevinden zich in het pakket java.util.


Java

  1. Java-operators
  2. Java-opmerkingen
  3. Java voor elke lus
  4. Java-strings
  5. Java-interface
  6. Java anonieme klasse
  7. Java proberen-met-bronnen
  8. Java-annotaties
  9. Java-beweringen
  10. C# Collecties Zelfstudie met Voorbeelden
  11. Java - Collecties Framework