Gå til innhold

Øke størrelsen på en array


Anbefalte innlegg

Skrevet

Har et lite problem...

Har en array, som jeg har satt ant plasser=0, fordi før jeg vil legge noe inn i tabellen, vil jeg øke antall plasser med 1. Går dette ann, eller bør jeg bruke hash-map eller noe liknende?

 

eks:

 

Int[] tabell=new Int[0];

 

// her vil jeg ha en setning som gjør at tabellen får en plass til.

 

tabell[0]=4;

 

// nok en gang gi tabellen en plass til

 

tabell[1]=3;

 

OSV...

Videoannonse
Annonse
Skrevet

Det er ikke mulig å endre lengden på en array etter at den er opprettet. Avhengig av hva du skal med listen (arrayen) kan du bruke ArrayList, HashMap el.

 

Ønsker du en dynamisk array bruk f.eks. ArrayList.

 

Ønsker du å assosiere navn til elementene i listen (for enkle sok) bruk f.eks. HashMap.

Skrevet

Et array har fast lengde, og kan ikke utvides.

 

Enten må du opprette tabellen med tilstrekkelig antall plasser første gangen, eller bruke en ArrayList eller Vector.

 

Edit: Oops, for sent ute... :cool:

Skrevet

Vanvittig upraktisk å opprette et array med 0 lengde. Dersom du insisterer på å bruke array ville jeg f.eks lagd et array med lengde 32, og sjekket om det var nok plass hver gang jeg skulle legge inn et tall. Da hadde det vært greit med en metode som doblet antall plasser i et array. Dette må da gjøres ved å lage et nytt array som er dobbelt så stort og kopiere alt innholdet i det gamle arrayet inn i dette. Til dette kan du blant annet bruke den innebygde funksjonen "system.arraycopy(....)".

Skrevet

Her er en løsning:

 

la oss si du har tabellen "tabell1", med 3 plasser, og du vil ha 2 plasser til.

 

//opprett en midlertidig tabell med 2 flere plasser for den utvidete tabellen:

//eks:

int[] tempTabell = new int[tabell1.length + 2];

 

//fyll temptabellen med verdiene i tabell1:

for(int i = 0; i < tabell1.length; i++)

tempTabell = tabell1;

 

//Gi tempTabell navnet til den gamle tabellen:

tabell1 = tempTabell;

 

da vil du ha utvider tabell1 med 2 plasser, og likevel tatt vare på gamle data.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...