Sådan reduceres størrelsen af et array i Java
I dette afsnit vil vi se hvordan man reducerer størrelsen af et array i Java . Kan du ændre størrelsen på et array i Java? Nej, vi kan ikke reducere størrelsen af et array i Java. I Java er arrays faste i størrelse, hvilket betyder, at når et array er oprettet, kan vi ikke ændre dets størrelse. Men hvis der er behov for at ændre størrelsen på et array i Java, kan vi oprette et andet array med den nødvendige længde og kopiere de nødvendige elementer til det nye array. På denne måde kan vi reducere størrelsen af et array.
For eksempel:-
array =[1, 2, 3]
Ovenstående matrix er af størrelse 3, vi ønsker at reducere det til 2.
array1 =resize(array, 2)
array1 =[1, 2]
Sådan ændrer du størrelsen på Array Java
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4, 5 };
System.out.println("Array elements are: "
+ Arrays.toString(array));
array = (int[]) resize(array, 3);
System.out.println("The new array elements are: "
+ Arrays.toString(array));
}
private static Object resize(Object oldArray, int newSize) {
int oldSize = java.lang.reflect.Array.getLength(oldArray);
Class<?> elementType = oldArray.getClass().getComponentType();
Object newArray =
java.lang.reflect.Array.newInstance(elementType, newSize);
int preserveLength = Math.min(oldSize, newSize);
if (preserveLength > 0) {
System.arraycopy(oldArray, 0, newArray, 0, preserveLength);
}
return newArray;
}
}
Output:-
Array-elementer er:[1, 2, 3, 4, 5]
De nye array-elementer er:[1, 2, 3]
Ved at bruge ovenstående resize()-metode kan vi reducere længden af enhver type array i Java. I ovenstående program har vi brugt reflection API og System.arraycopy() metoden. I Java indeholder System-klassen masser af native metoder som arraycopy()-metoden. Arraycopy() er en indbygget metode, og den bruger en direkte hukommelseskopi uden for Java-land.
Java Resize Array
Lad os se et andet program til at reducere størrelsen af et array i Java ved hjælp af Arrays.copyOf() metoden. CopyOf()-metoden i Java Arrays-klassen bruger internt selve metoden System.arraycopy().
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] array = { 12, 24, 63, 45, 50 };
System.out.println("Array before Resize: "
+ Arrays.toString(array));
array = Arrays.copyOf(array, 3);
System.out.println("Array after Resize: "
+ Arrays.toString(array));
}
}
Output:-
Array før ændring af størrelse:[12, 24, 63, 45, 50]
Array efter ændring af størrelse:[12, 24, 63]