Jag har satt min Array till ett fast värde 5.
När det är fullt så vill jag skapa en ny dubbelt så stor Array och kopiera objekten från den gamla till den Nya.
Hur gör man detta?
7 svar · 475 visningar · startad av golgata
Jag har satt min Array till ett fast värde 5.
När det är fullt så vill jag skapa en ny dubbelt så stor Array och kopiera objekten från den gamla till den Nya.
Hur gör man detta?
ta en titt här :)
http://www.webforum.nu/showthread.php?s=&threadid=110481&forumid=92
men jag lägger inte in mitt på samma sätt men jag har kanske gjort fel...
jag har gjort på följande sätt.
private int size;
private Media[] lista;
public MediaContainer(int i_size)
{
size = i_size;
lista = new Media[size];
}
Sen i den andra filen som heter testMedia.java har jag lagt in följande.
[kod]
int size = 4;
MediaContainer lista = new MediaContainer(size);
Kan man ändra koden på något sätt så att det blir lättare att jobba med den...
Nu har jag ändrat ännu mer.
Min kod ser ut på följande sätt. Borde inte detta fuingera???
public class MediaContainer
{
private Media[] lista;
private int m_mediaArray;
public MediaContainer()
{
lista = new Media[4];
m_mediaArray = 0;
}
public void okaArray()
{
Media[] tmplista = new Media [10];
for (int i =0; i<lista.length; i++)
{
tmplista[i] = lista[i];
lista[i] = tmplista[i];
}
}
Nej den fungerar inte som du vill. Metoden okaArray() kopierar element från lista till tmplista och sedan tillbaka till lista, detta gör inte att lista blir större. Referensen till tmplista kommer att försvinna efter att metoden returnerar. Det du behöver göra är att sätta lista att referera till tmplista efter for-loopen.
Följande borde göra susen:
public void okaArray()
{
// Dubbla array:en
Media[] tmplista = new Media [lista.length * 2];
// Kopiera data till tmplistan
for (int i =0; i<lista.length; i++)
{
tmplista[i] = lista[i];
}
// Sätt om så att lista pekar på den nya array:en
lista = tmplista;
}
Använd inte en for-loop för att kopia delar av en array, använd System.arraycopy i stället. Den är snabbare.