Archief - Java: lengte van array aanpassen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Pudmeister

Legacy Member
Stel: ik wil de lengte van een array aanpassen. Hoe zou dit moeten?

Code:
public static void main(String[] args){

int []array = new int[3]; //Hier maak ik een array met 3 elementen

//Er worden enkele waardes in gezet
array[0] = 10;
array[1] = 20;
array[2] = 30;


}

Als ik nu nog meer waardes in de array wil zetten na deze code. Bijvoorbeeld als je op voorhand niet weet hoe lang de array moet zijn. Want als ik opnieuw array = new int[5] doe, zodat er nu 5 waardes kunnen worden opgeslagen, dan zijn de vorige waardes weg...

blackrabbit

Legacy Member
Dan moet je die oude waardes kopiëren he..
Of ArrayList gebruiken.

forloRn_

Legacy Member
Niks kopiëren, gewoon .add() op een ArrayList of een LinkedList.

Cycloon

Legacy Member
forloRn_ zei:
Niks kopiëren, gewoon .add() op een ArrayList of een LinkedList.

Idd.

Maar om toch eventjes technisch te worden, de implementatie van ArrayList gaat ook arrays kopiëren wanneer er niet genoeg plaats is (dit gebeurt uiteraard intern en merk je niet). LinkedList heeft daar geen last van maar is sowieso een stukje zwaarder :)

Pudmeister

Legacy Member
Zou iemand mijn voorbeeld kunnen aanvullen? Want ik weet niet hoe die ArrayList precies werkt...

NeverwinterX

Legacy Member
Code:
List<Integer> list = new ArrayList<Integer>();
// of met Java 7: List<Integer> list = new ArrayList<>();
list.add(10);
list.add(20);
list.add(30);
enz

ArrayList gebruikt op de achtergrond zelf een array en zal die zelf vergroten wanneer nodig (ie, er kan dus een vertraging optreden op het moment dat die wordt vergroot; in de meeste gevallen hoef je daar geen rekening mee te houden).

Meer uitleg:
http://docs.oracle.com/javase/tutorial/collections/interfaces/list.html
http://docs.oracle.com/javase/tutorial/collections/implementations/list.html
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

grafzerkpisser

Legacy Member
Hou er wel rekening mee dat de elementen van een ArrayList van het type Object zijn. Je gaat deze dus eerst moeten casten vooraleer je de properties en methods ervan kan gebruiken. + Let ook op: in een ArrayList kan je om het even wat in steken --> kan dus fouten opleveren.

forloRn_

Legacy Member
blackrabbit zei:
Waarmee je zijn vraag dus helemaal negeert.

Het antwoord is: nee, je kunt de grenzen van een array niet aanpassen dus je moet een List gebruiken. Nu goed?

grafzerkpisser zei:
Hou er wel rekening mee dat de elementen van een ArrayList van het type Object zijn. Je gaat deze dus eerst moeten casten vooraleer je de properties en methods ervan kan gebruiken. + Let ook op: in een ArrayList kan je om het even wat in steken --> kan dus fouten opleveren.

Als Java nog geen generics had ja, maar dat is ondertussen al wel meer dan 7 jaar het geval.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan