Just nu i M3-nätverket
Jump to content

Ändra storlek på en Array


Daniel Wahlgren

Recommended Posts

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?

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

-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

 

Link to comment
Share on other sites

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

 

--

.Wey

 

Future Hero Next Generati0n

 

Link to comment
Share on other sites

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?

 

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...