Just nu i M3-nätverket
Gå till innehåll

Ändra storlek på en Array


Daniel Wahlgren

Rekommendera Poster

Daniel Wahlgren

Hej

Sitter och experimenterar lite med java. Jag undrar om det finns något sätt man kan ändra storlek på en array.

 

public String[] stringArray = new String[0];

 

och sedan in en metod öka storleken med 1?

 

Anledningen är för att jag vill lagra instanser av konton i en Array, men att arrayen skall vara så lång som antalet konton som finns i arrayen. Det innebär att arrayen är 0 från börjag, och ökar med 1 varje gång ett konto läggs till.

 

Eller finns det ett bättre sätt att göra detta på?

 

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

Länk till kommentar
Dela på andra webbplatser

Ja, använd en länkad struktur istället. En array är fast dimensionerad, länkade listor växer dynamiskt.

 

Om du absolut vill använda arrayer så:

Det du kan göra är att skapa en ny array som är 1 större, och kopiera över all data dit istället. Som du förstår är detta inte särskilt 'billigt' i datorkraft dock.

 

Ett annat sätt är att göra klumputökningar av arrayen, börja med en array på 100 element. När 101:a kontot ska läggas till gör du en kopiering och skapande av ny array enligt ovan, men öka med 100 element till istället för 1 (funderar på om det är så STL-klassen vector fungerar?)

 

--

.Wey

 

Future Hero Next Generati0n

[inlägget ändrat 2003-02-23 16:37:26 av Weyland]

Länk till kommentar
Dela på andra webbplatser

-Patrik Johansson-

Du kan använda Vector eller någon annan struktur i java.util(http://java.sun.com/j2se/1.4.1/docs/api/java/util/package-summary.html)

 

Med Vectorklassen skulle det kunna se ut så här.

Här läses det in några argument från prompten skirva ut dessa, sedan lägga till ett objekt i vektorn v och sedan loopa igen vekotr v för att skriva ut.

import java.util.*;

public class Vectr{

   public static void main(String[] args){
Vector v = new Vector();
for(int i = 0; i<args.length;i++)
    v.add(args[i]);

int s = v.size();
for(int i = 0;i<s;i++)
    System.out.println(v.get(i));

v.add("sista stringen");
int s = v.size();
for(int i = 0;i<s;i++)
    System.out.println(v.get(i));	

   }

}

Sen kan man ju tänka sig en kopierande metod för den arrayen du använder nu men detta tycker jag är enklare.

 

 

/Neox -(Patrik J)

"Gravitation can not be held responsible for people falling in love"
- citat av Albert Einstein

 

Länk till kommentar
Dela på andra webbplatser

Hmm, det finns en vectorklass i java också? Jaja, det löser juh biffen.. men är inte lika roligt :)

 

--

.Wey

 

Future Hero Next Generati0n

 

Länk till kommentar
Dela på andra webbplatser

Daniel Wahlgren

Hm... jag försökte med vektor

 

 

protected Vector accountVektor = new Vector();

 

I en metod:

Account temp = new Account(money);

accountVektor.add(temp);

 

Problemet är att jag när jag testar detta får

"Bank.Account@6f0472" som output och jag kommer inte åt metoderna kopplade till Account...

 

Kan jag skapa en vektor på samma sätt som jag gjorde med en array, det ill säga att vektorn blir av datatypen Account?

 

 

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

Länk till kommentar
Dela på andra webbplatser

Det du hämtar ut ur vektorn är av typen Object, du måste göra en cast till typen Account.

 

Dvs:

 

Account acc = (Account)accountVektor.elementAt(0);

 

Om det nu finns något där, elementAt(0) var bara ett exempel.

 

[inlägget ändrat 2003-02-23 17:41:08 av qwerty99]

Länk till kommentar
Dela på andra webbplatser

Daniel Wahlgren

Tack, nu funkar allt perfekt! :)

 

**********

Om spelvåld påverkar unga, hur skulle pacmangenerationen se ut idag?

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...