Gå til innhold

Øke størrelsen på en array


Anbefalte innlegg

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...

Lenke til kommentar
Videoannonse
Annonse

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.

Lenke til kommentar

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(....)".

Lenke til kommentar

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.

Lenke til kommentar

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...