Hoe de grootte van een array in Java vergroten?

Ik wil zoveel elementen opslaan als gewenst door de gebruiker in een array. Maar hoe doe ik het.

Als ik een array zou maken, moet ik dat doen met een vaste grootte. Elke keer dat een nieuw element aan de array wordt toegevoegd en de array vol raakt, wil ik de grootte met ‘1’ bijwerken.

Ik heb verschillende soorten code moe, maar het is niet gelukt.

Het zou enorm helpen als iemand me hier een oplossing voor zou kunnen geven – indien mogelijk in code.


Antwoord 1, autoriteit 100%

Gebruik in plaats van een array een implementatie van java.util.Listzoals ArrayList. Een ArrayList heeft een array-backend die waarden in een lijst bevat, maar de grootte van de array wordt automatisch verwerkt door de lijst.

ArrayList<String> list = new ArrayList<String>();
list.add("some string");

Je kunt de lijst ook converteren naar een array met list.toArray(new String[list.size()])enzovoort voor andere elementtypen.


Antwoord 2, autoriteit 55%

Op een laag niveau kun je het op deze manier doen:

long[] source = new long[1];
long[] copy = new long[source.length + 1];
System.arraycopy(source, 0, copy, 0, source.length);
source = copy;

Arrays.copyOf() doet hetzelfde.


Antwoord 3, autoriteit 36%

Je kunt een tijdelijke array maken met een grootte die één element groter is dan het origineel, en dan de elementen van het origineel naar de temp kopiëren en de tijdelijke array aan de nieuwe toewijzen.

public void increaseSize() {
   String[] temp = new String[original.length + 1];
   for (int i = 0; i < original.length; i++){
      temp[i] = original[i];
   }
   original = temp;
}

Je kunt de maat op verschillende manieren wijzigen, maar hetzelfde idee is van toepassing.


Antwoord 4, autoriteit 27%

Dat kan niet. U kunt een nieuwe array maken en de items naar die array verplaatsen – of u kunt een ArrayList gebruiken.


Antwoord 5, autoriteit 27%

Door de copyOfmethode in de java.util.Arraysklasse te gebruiken, zal de String[]grootte automatisch/dynamisch toenemen. In onderstaande code arraysize 0wordt na manipulatie van het gebruik van Arrays.copyOfde grootte van String arrayvergroot tot 4.

package com.google.service;
import java.util.Arrays;
public class StringArrayAutoIncrement {
    public static void main(String[] args) {
        String[] data = new String[] { "a", "b", "c", "d", "e" };
        String[] array = new String[0];// array initialize with zero
        int incrementLength = 1;
        for (int i = 0; i < data.length; i++) {
            array = Arrays.copyOf(data, i + incrementLength);// increment by +1
        }
        /**
         * values of array after increment
         */
        for (String value : array) {
            System.out.println(value);
        }
    }
}

Uitvoer:

a
b
c
d
e

Antwoord 6, autoriteit 9%

https://www.java2novice.com/java-arrays/array- kopiëren/

int[] myArr = {2,4,2,4,5,6,3};
System.out.println("Array size before copy: "+myArr.length);
int[] newArr = Arrays.copyOf(myArr, 10);
System.out.println("New array size after copying: "+newArr.length);

U kunt ook myArr = Arrays.copyOf(myArr, 10) doen;

In dit geval, myArr = Arrays.copyOf(myArr, myAry.length+1);


Antwoord 7

je kunt daarvoor de array list gebruiken

hier is een voorbeeld voor een arraylijst van string

‘java.io.BufferedReader importeren;
import java.io.IOException;
import java.io.InputStreamReader;
java.util.ArrayList importeren;

openbare klasse Ex01 {

public static void main(String[] args) throws IOException { 
    BufferedReader userInput = new BufferedReader 
        (new InputStreamReader(System.in));
    ArrayList<String> myArr = new ArrayList<String>();
    myArr.add("Italian Riviera");
    myArr.add("Jersey Shore");
    myArr.add("Puerto Rico");
    myArr.add("Los Cabos Corridor");
    myArr.add("Lubmin");
    myArr.add("Coney Island");
    myArr.add("Karlovy Vary");
    myArr.add("Bourbon-l'Archambault");
    myArr.add("Walt Disney World Resort");
    myArr.add("Barbados");
    System.out.println("Stupid Vacation Resort Adviser");
    System.out.println("Enter your name:");
    String name = userInput.readLine();
    Integer nameLength = name.length();
    if (nameLength == 0) 
    { 
        System.out.println("empty name entered");
        return;
    } 
    Integer vacationIndex = nameLength % myArr.size();
    System.out.println("\nYour name is "+name+", its length is " + 
                    nameLength + " characters,\n" +
                    "that's why we suggest you to go to " 
                    + myArr.get(vacationIndex));
} 

}’

op dezelfde manier kun je een array maken voor integer, blooean en allerlei soorten gegevenstypen

voor meer details kun je dit zien

http://www.anyexample.com/programming/java/java_arraylist_example.xml


Antwoord 8

Maak een lijstobject, voeg de elementen toe en converteer dat lijstobject naar een array met list.toArray(new String[list.size()])


Antwoord 9

u kunt het op deze manier doen

import java.util.Scanner;
class Add
{
  public static void main(String[] args)
  {
     Scanner obj=new Scanner(System.in);
     char ans='y';
     int count=0;
     while(ans!='N'||ans!='n')
     {
       int initial_size=5; 
       int arr[]=new int [initial_size];
       arr[0]=1;
       arr[1]=2;
       arr[2]=3;
       arr[3]=4;
       arr[4]=5;
       if(count>0)
       {
           System.out.print("enter the element u want to add in array: ");
           arr[initial_size-1]=obj.nextInt();
       }
       System.out.print("Do u want to add element in array?");
       ans=obj.next().charAt(0);
       if(ans=='y'||ans=='Y')
       {
         initial_size++;
         count++;
       }             
    }   
  }
}

Antwoord 10

public class IncreaseArraySize {
 public static void main(String[] args) {
    int arr[] = new int[5];
      for (int i = 0; i < arr.length; i++) {
            arr[i] = 5;
      }
      for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
      }
       System.out.println(" ");
       System.out.println("Before increasing Size of an array :" + arr.length);
        int arr2[] = new int[10];
        arr = arr2;
        arr2 = null;
        for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + " ");
    }
    System.out.println("");
    System.out.println("After increasing Size of an array : " + arr.length);
}
}

Antwoord 11

Gebruik een ArrayList. De grootte wordt automatisch groter als je probeert toe te voegen aan een volledige ArrayList.

Other episodes