Java >> Java tutorial >  >> Java

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]


Java tag