Video: Java Programming Tutorial - 27 - Introduction to Arrays 2024
De klasse ArrayList die wordt gebruikt, is in veel Android-app-programma's slechts het topje van de ijsberg van de Java-collecties. De Java-bibliotheek bevat veel verzamelklassen, elk met zijn eigen voordelen. De tabel bevat een verkorte lijst.
Klasnaam | Kenmerk |
---|---|
ArrayList | Een formaat dat kan worden aangepast. |
LinkedList | Een zoeklijst met elk een veld dat verwijst naar de volgende
een in de lijst. |
Stack | Een structuur (die van onder naar boven groeit) die is geoptimaliseerd
voor toegang tot de bovenste waarde. U kunt eenvoudig een waarde toevoegen aan de -top of deze van boven verwijderen. |
Wachtrij | Een structuur (die aan één kant groeit) die is geoptimaliseerd voor
waarden toevoegen aan één uiteinde (de achterzijde) en waarden verwijderen van het andere uiteinde (de voorkant). |
PriorityQueue | Een structuur, zoals een wachtrij, waarmee bepaalde (hogere prioriteit)
waarden naar voren kunnen worden verplaatst. |
HashSet | Een verzameling die geen dubbele waarden bevat. |
HashMap | Een verzameling sleutel / waardeparen. |
Elke collectieklasse heeft zijn eigen set van methoden (naast de methoden die het overneemt van AbstractCollection, de voorloper van alle verzamelklassen).
Een array is een bepaald type verzameling dat is geoptimaliseerd voor indexering. Dat wil zeggen, u kunt gemakkelijk en efficiënt de 100e waarde vinden die is opgeslagen in een array, de 1, 000ste waarde die is opgeslagen in een array, of de 1, 000, 000e waarde die is opgeslagen in een array.
De array is een eerbiedwaardige, beproefde en waarachtige functie van veel programmeertalen, waaronder nieuwere talen zoals Java en oudere talen zoals FORTRAN. In feite gaat de geschiedenis van de array zo ver terug dat de meeste talen (inclusief Java) een speciale notatie hebben voor het omgaan met arrays. De lijst illustreert de notatie voor arrays in een eenvoudig Java-programma.
pakket com. allmycode. verzamelingen; openbare klasse SimpleCollectionsDemo {public static void main (String [] args) { String [] myArray = new String [4]; myArray [0] = "Hallo"; myArray [1] = ","; myArray [2] = "lezers"; myArray [3] = "!"; voor (int i = 0; i <4; i ++) { systeem. uit. afdruk (myArray [i]); } Systeem. uit. println (); for (String string: myArray) {Systeem. uit. print (string);}}}
De afbeelding toont de uitvoer van een run van de code in de lijst. Zowel de gewone lus als de verbeterde lus geven dezelfde uitvoer weer.
In de lijst gebruikt de gewone lus indexen, waarbij elke index is gemarkeerd door vierkante haken.Zoals het is met alle Java-collecties, is de index van de beginwaarde 0, niet 1. Let ook op het getal 4 in de array-declaratie - dit geeft aan dat "u 4 waarden in de array kunt opslaan. "
Het getal 4 geeft niet aan dat" u een waarde aan myArray [4] kunt toewijzen. "In feite, als je een statement toevoegt zoals myArray [4] =" Oeps! "Om de code in de lijst, krijg je een vervelende foutmelding (ArrayIndexOutOfBoundsException) wanneer u het programma uitvoert.
De instructie String [] myArray = new String [4] maakt een lege array en laat de variabele myArray verwijzen naar die lege array. De array kan mogelijk maximaal vier waarden opslaan. Maar in eerste instantie verwijst die variabele naar een array die geen waarden bevat. Pas als Java de eerste toewijzingsinstructie (myArray [0] = "Hallo") uitvoert, bevat de array waarden.
U kunt eenvoudig en efficiënt de 100e waarde vinden die is opgeslagen in een array of de 1, 000, 000e waarde die is opgeslagen in een array. Niet slecht voor een dag werk. Dus wat is het nadeel van het gebruik van een array? Het grootste nadeel van een array is dat elke array een vaste limiet heeft voor het aantal waarden dat deze kan bevatten. Wanneer u de array in de lijst maakt, behoudt Java ruimte voor maximaal vier tekenreekswaarden.
Als u later in het programma besluit dat u een vijfde element in de array wilt opslaan, hebt u wat onhandige, inefficiënte code nodig om een grotere array te maken. U kunt ook de grootte overschatten die u nodig hebt voor een array, zoals in dit voorbeeld wordt getoond:
String [] myArray = new String [20000000];
Wanneer u overschat, verspilt u waarschijnlijk veel geheugenruimte.
Een andere vervelende functie van een array is de moeilijkheid die u kunt hebben bij het invoegen van nieuwe waarden. Stel je voor dat je elk jaar een houten kist in je verzameling Emperor Constantine Comics hebt. De serie dateert uit het jaar 307 A. D., toen Constantijn het hoofd van het Romeinse Rijk werd.
Je hebt slechts 1, 700 vakken omdat je ongeveer zes jaar mist (meestal uit de jaren 1150 tot 1155). De vakken zijn niet genummerd, maar ze zijn gestapeld naast elkaar in een lijn die 200 meter lang is. (De lijn is zo lang als de 55e verdieping van een wolkenkrabber lang is.)
Bij een garage sale in Istanbul, vindt u een zeldzame editie van Emperor Constantine Comics vanaf maart 1152. Na uw vreugde over uw eerste strip uit het jaar 1152, je realiseert je dat je tussen de jaren 1151 en 1153 een nieuwe doos in de stapel moet steken, waarbij je de doos van het jaar 2013 ongeveer tien centimeter naar links verplaatst en dan de doos van 2012 verplaatst in plaats van de doos van 2013 en verplaats vervolgens de doos van 2011 in plaats van de doos van 2012. Enzovoort.
Het leven voor de begerige keizer Constantijn Comics verzamelaar wordt zo vervelend! Het invoegen van een waarde in het midden van een grote array is even vervelend.