webForumDet fria alternativet

kopiera och dubbla en array

7 svar · 475 visningar · startad av golgata

golgataMedlem sedan maj 2000131 inlägg
#1

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?

Mc FettoMedlem sedan nov. 20021 920 inlägg
golgataMedlem sedan maj 2000131 inlägg
#3

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

golgataMedlem sedan maj 2000131 inlägg
#4

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];
	}
	}
RocketMedlem sedan feb. 2000353 inlägg
#5

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.

golgataMedlem sedan maj 2000131 inlägg
#6

Men hur?

Som jag har gjort det plusar den väl bara till 1. jag vill dubbla arrayn....

antilizaerMedlem sedan apr. 200358 inlägg
#7

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;
}
spangoMedlem sedan juni 20006 147 inlägg
#8

Använd inte en for-loop för att kopia delar av en array, använd System.arraycopy i stället. Den är snabbare.

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb