web-dev-qa-db-fra.com

Comment augmenter la taille d'un tableau en Java?

Je veux stocker autant d'éléments que souhaité par l'utilisateur dans un tableau. Mais comment puis-je le faire? Si je devais créer un tableau, je dois le faire avec une taille fixe. Chaque fois qu'un nouvel élément est ajouté au tableau et que celui-ci est plein, je souhaite mettre à jour sa taille par '1'.J'en ai marre de divers types de code ... vous pourriez me donner quelques solutions à ce sujet..en code si possible.Merci

7
joel abishai paul

Au lieu d'utiliser un tableau, utilisez une implémentation de Java.util.List telle que ArrayList. Un ArrayList a un backend de tableau qui contient les valeurs dans une liste, mais la taille du tableau est automatiquement gérée par la liste.

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

Vous pouvez également convertir la liste en un tableau en utilisant list.toArray(new String[list.size()]) et ainsi de suite pour les autres types d'élément.

6
Vulcan

Vous pouvez créer un tableau temporaire avec une taille d'un élément plus grand que l'original, puis copier les éléments de l'original dans le temp et affecter le tableau temporaire au nouveau.

public void increaseSize() {
   String[temp] = new String[original.length + 1];

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

Vous pouvez modifier la taille de différentes manières, mais la même idée s’applique.

4
PandaOrb

Tu ne peux pas. Vous pouvez créer un nouveau tableau et déplacer les éléments dans ce tableau. Vous pouvez également utiliser une liste de tableaux.

2
Peter Rasmussen

Sur un niveau bas, vous pouvez le faire de cette façon:

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

Arrays.copyOf () fait la même chose.

1
A Kunin

En utilisant copyOf method dans Java.util.Arrays, la taille de la classe String[] est incrémentée automatiquement/dynamiquement.

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);
        }
    }
}

Sortie:  

a
b
c
d
e
1
pudaykiran

Créer un objet de liste, ajouter les éléments et convertir cet objet de liste en tableau à l'aide de list.toArray (new String [list.size ()])

0
user1573029