Java >> Java Program >  >> Java

Kopiera En Array I Java - Java Dagens Koncept

Tänk på följande program.

public class ArraysInJava
{
	public static void main(String[] args)
	{
		int[] a = {12, 21, 0, 5, 7};   //Declaring and initializing an array of ints

		int[] b = a;             //copying array 'a' to array 'b'

		//Printing elements of array 'b'

		for (int i = 0; i < b.length; i++)
		{
			System.out.println(b[i]);
		}

		a[2] = 56;     //Changing value of 3rd element of array 'a'

		System.out.println(b[2]);    //value of 3rd element of array 'b' also changes

		b[4] = 100;     //Changing value of 5th element of array 'b'

		System.out.println(a[4]);     //value of 5th element of array 'a' also changes
	}
}

I exemplet ovan definierar vi en array av ints. Vi kopierar den arrayen till en annan array av ints. Du kan märka att ändring av värdet på en array också kommer att återspeglas i en annan array. Det betyder att båda arrayvariablerna (a och b) pekar på samma objekt i minnet. Detta kan illustreras med hjälp av diagram enligt nedan,

Om du kopierar en array med ovanstående metod kommer ändringar som görs i en array att återspeglas i andra. Normalt vill du inte ha sådant beteende i realtid. Du kan behöva två olika arrayobjekt med samma uppsättning element. I sådana scenarier använder du någon av följande metoder istället för att använda ovanstående metod.

1) Kopiera en array med för loop :

Följande exempel visar hur man kopierar en array med for-loop.

public class ArraysInJava
{
	public static void main(String[] args)
	{
		int[] a = {12, 21, 0, 5, 7};   //Declaring and initializing an array of ints

		int[] b = new int[a.length];             //Declaring and instantiating another array of ints with same length

		for (int i = 0; i < a.length; i++)
		{
			b[i] = a[i];
		}

		//Now changing values of one array will not reflect in another array

		a[2] = 56;       //Changing value of 3rd element in array 'a'

		System.out.println(b[2]);    //value of 3rd element in array 'b' will not change

		b[4] = 100;     //Changing value of 5th element in array 'b'

		System.out.println(a[4]);    //value of 5th element in array 'a' will not change
	}
}

2) Kopiera en array med metoden copyOf() för java.util.Array Class :

public class ArraysInJava
{
	public static void main(String[] args)
	{
		int[] a = {12, 21, 0, 5, 7};   //Declaring and initializing an array of ints

		//creating a copy of array 'a' using copyOf() method of java.util.Arrays class

		int[] b = Arrays.copyOf(a, a.length);  

		//Printing elements of array 'b'

		for (int i = 0; i < b.length; i++)
		{
			System.out.println(b[i]);
		}

		//Now changing values of one array will not reflect in other array

		a[2] = 56;       //Changing value of 3rd element in array 'a'

		System.out.println(b[2]);    //value of 3rd element in array 'b' will not change

		b[4] = 100;     //Changing value of 5th element in array 'b'

		System.out.println(a[4]);    //value of 5th element in array 'a' will not change
	}
}

3) Kopiera en array med metoden clone() :

Alla arrayer kommer att ha clone()-metoden ärvd från klassen java.lang.Object. Med den här metoden kan du kopiera en array.

public class ArraysInJava
{
	public static void main(String[] args)
	{
		int[] a = {12, 21, 0, 5, 7};   //Declaring and initializing an array of ints

		//creating a copy of array 'a' using clone() method

		int[] b = a.clone();  

		//Printing elements of array 'b'

		for (int i = 0; i < b.length; i++)
		{
			System.out.println(b[i]);
		}

		//Now changing values of one array will not reflect in other array

		a[2] = 56;       //Changing value of 3rd element in array 'a'

		System.out.println(b[2]);    //value of 3rd element in array 'b' will not change

		b[4] = 100;     //Changing value of 5th element in array 'b'

		System.out.println(a[4]);    //value of 5th element in array 'a' will not change
	}
}

4) Kopiera en array med arraycopy()-metoden för systemklass :

public class ArraysInJava
{
	public static void main(String[] args)
	{
		int[] a = {12, 21, 0, 5, 7};   //Declaring and initializing an array of ints

		//Creating an array object of same length as array 'a'

		int[] b = new int[a.length];

		//creating a copy of array 'a' using arraycopy() method of System class

		System.arraycopy(a, 0, b, 0, a.length);

		//Printing elements of array 'b'

		for (int i = 0; i < b.length; i++)
		{
			System.out.println(b[i]);
		}

		//Now changing values of one array will not reflect in other array

		a[2] = 56;       //Changing value of 3rd element in array 'a'

		System.out.println(b[2]);    //value of 3rd element in array 'b' will not change

		b[4] = 100;     //Changing value of 5th element in array 'b'

		System.out.println(a[4]);    //value of 5th element in array 'a' will not change
	}
}

Obs: Genom att använda arraycopy()-metoden i klassen System kan du kopiera en del av en array till en annan array.


Java-tagg