Java >> Java tutorial >  >> Tag >> new

Tilføj nye elementer til et array i Java

Denne vejledning diskuterer, hvordan man tilføjer nye elementer til et array i Java.

Array i Java er et containerobjekt, som indeholder et fast antal elementer af samme datatype. Længden af ​​arrayet defineres, mens arrayobjektet erklæres, og kan ikke ændres senere.

Antag, at vi har et array med længde 5 i Java instansieret med nogle værdier:

String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";

Nu er der et krav om at tilføje et 6. element til vores array. Lad os prøve at tilføje dette 6. element til vores array.

arr[5] = "6";

Ovenstående kodelinje giver følgende fejl:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5

Dette skyldes, at vi oprindeligt erklærede arrayet for at være af størrelse 5, og vi forsøgte at tilføje et sjette element til det.

Bare rolig, der er 2 mulige løsninger til at få dette gjort. Vi kan bruge en ArrayList i stedet for et array, eller opret et nyt større array for at rumme nye elementer.

Brug en ArrayList

En bedre og anbefalet løsning er at bruge en ArrayList i stedet for et array, da det kan ændres størrelse. Der er ingen fast størrelse på ArrayList Derfor, når der er behov for at tilføje et nyt element, kan du blot tilføje ved at udføre testList.add(element) .

import java.util.*;

public class Main {
    public static void main(String args[]) {
        List<String> testList = new ArrayList<String>();
        testList.add("1");
        testList.add("2");
        testList.add("3");
        testList.add("4");
        testList.add("5");
        
        //Print the original list 
        System.out.println("Initial ArrayList:\n"
                           + testList); 
        //Add elements without running into any error
        testList.add("6");
        testList.add("7");
        
        //Print the list after adding elements 
        System.out.println("Modified ArrayList:\n"
                           + testList);
        
    }
}

Ovenstående kode udsender følgende.

Initial ArrayList:
[1, 2, 3, 4, 5]
Modified ArrayList:
[1, 2, 3, 4, 5, 6, 7]

Eller hvis vi allerede har et array, kan vi også oprette en ArrayList direkte.

import java.util.*;

public class Main {
    public static void main(String args[]) {
        //Create an array
        String[] arr = new String[1];
        arr[0] = "1";
        //Convert to ArrayList
        List<String> testList = new ArrayList<>(Arrays.asList(arr));
        
        //Print the original list 
        System.out.println("Initial ArrayList:\n"
                           + testList); 
        //Add elements to it
        testList.add("2");
        testList.add("3");
        
        //Print the list after adding elements 
        System.out.println("Modified ArrayList:\n"
                           + testList);
        
    }
}

Ovenstående kode udsender følgende.

Initial ArrayList:
[1]
Modified ArrayList:
[1, 2, 3]

Vi kan nemt konvertere en ArrayList tilbage til et array.

import java.util.*;

public class Main {
    public static void main(String args[]) {
        //Create an array
        String[] arr = new String[1];
        arr[0] = "1";
        
        //Convert to ArrayList
        List<String> testList = new ArrayList<>(Arrays.asList(arr));
        
        //Add elements to it
        testList.add("2");
        testList.add("3");
        
        //Convert the arraylist back to an array
        arr = new String[ testList.size() ];
        testList.toArray(arr);
    }
}

Opret et nyt større array

Hvis vi insisterer på kun at arbejde med arrays, kan vi bruge java.util.Arrays.copyOf metode til at skabe et større array og rumme et nyt element. Lad os bruge arrayet arr vi oprettede ovenfor og tilføjer et nyt element til det i eksemplet nedenfor.

import java.util.*;

public class Main {
    public static void main(String args[]) {
        //Create an array
        String[] arr = new String[5];
        arr[0] = "1";
        arr[1] = "2";
        arr[2] = "3";
        arr[3] = "4";
        arr[4] = "5";
        
        // print the original array 
        System.out.println("Initial Array:\n"
                           + Arrays.toString(arr)); 
                           
        //Steps to add a new element
        //Get the current length of the array
        int N = arr.length;
        //Create a new array of length N+1 and copy all the previous elements to this new array
        arr = Arrays.copyOf(arr, N + 1);
        //Add a new element to the array
        arr[N] = "6";
        // print the updated array 
        System.out.println("Modified Array:\n"
                           + Arrays.toString(arr)); 
    }
}

Ovenstående kode udsender følgende.

Initial Array:
[1, 2, 3, 4, 5]
Modified Array:
[1, 2, 3, 4, 5, 6]

Hvis vi senere føler behov for at tilføje et andet element til arr , bliver vi nødt til at gentage ovenstående kodeblok igen!

Derfor anbefales denne løsning ikke, fordi tilføjelsen af ​​hvert nyt element har en tidskompleksitet på O(n) da den skal kopiere alle elementer fra det forrige array til et nyt array. På den anden side tilføjelse af hvert nyt element ved hjælp af ArrayList har O(1) amortiseret kostpris pr. operation.


Java tag