Java ArrayList des tableaux?

Je veux créer un tableau multidimensionnel sans taille fixe.

Je dois pouvoir y append des éléments de Ssortingng[2] .

J’ai essayé de regarder:

 private ArrayList action = new ArrayList(); 

mais ça ne marche pas. quelqu’un a-t-il d’autres idées?

    Devrait être

     private ArrayList action = new ArrayList(); action.add(new Ssortingng[2]); ... 

    Vous ne pouvez pas spécifier la taille du tableau dans le paramètre générique, ajoutez uniquement des tableaux de taille spécifique à la liste ultérieurement. Cela signifie également que le compilateur ne peut pas garantir que tous les sous-tableaux soient de la même taille, il doit être garanti par vous.

    Une meilleure solution pourrait être d’encapsuler ceci dans une classe, où vous pouvez vous assurer que la taille uniforme des tableaux est un invariant de type.

    BTW vous devriez préférer coder contre une interface.

     private ArrayList action = new ArrayList(); 

    Devrait être

     private List action = new ArrayList(); 

    Puisque la taille de votre tableau de chaînes est fixée au moment de la compilation, il serait préférable d’utiliser une structure (comme Pair ) qui exige exactement deux champs et d’éviter ainsi les erreurs d’exécution possibles avec l’approche du tableau.

    Code:

    Comme Java ne fournit pas de classe Pair , vous devrez définir les vôtres.

     class Pair { public final A first; public final B second; public Pair(final A first, final B second) { this.first = first; this.second = second; } // // Override 'equals', 'hashcode' and 'toSsortingng' // } 

    puis utilisez-le comme:

     List> action = new ArrayList>(); 

    [Ici, j’ai utilisé la List car il est considéré comme une bonne pratique de programmer des interfaces. ]

     ArrayList action = new ArrayList(); 

    Ne nécessite pas de Ssortingng[2] ;

    Comme déjà répondu, vous pouvez créer une ArrayList de Ssortingng Arrays sous la forme de @ Péter Török écrite;

      //Declaration of an ArrayList of Ssortingng Arrays ArrayList listOfArrayList = new ArrayList(); 

    Lors de l’atsortingbution de différents tableaux de chaînes à cette ArrayList, la longueur de chaque tableau de chaînes sera différente.

    Dans l’exemple suivant, 4 tableaux de chaînes différents ont été ajoutés, leurs longueurs varient.

     Ssortingng Array #1: len: 3 Ssortingng Array #2: len: 1 Ssortingng Array #3: len: 4 Ssortingng Array #4: len: 2 

    Le code de démonstration est comme ci-dessous;

     import java.util.ArrayList; public class TestMultiArray { public static void main(Ssortingng[] args) { //Declaration of an ArrayList of Ssortingng Arrays ArrayList listOfArrayList = new ArrayList(); //Assignment of 4 different Ssortingng Arrays with different lengths listOfArrayList.add( new Ssortingng[]{"line1: test Ssortingng 1","line1: test Ssortingng 2","line1: test Ssortingng 3"} ); listOfArrayList.add( new Ssortingng[]{"line2: test Ssortingng 1"} ); listOfArrayList.add( new Ssortingng[]{"line3: test Ssortingng 1","line3: test Ssortingng 2","line3: test Ssortingng 3", "line3: test Ssortingng 4"} ); listOfArrayList.add( new Ssortingng[]{"line4: test Ssortingng 1","line4: test Ssortingng 2"} ); // Printing out the ArrayList Contents of Ssortingng Arrays // '$' is used to indicate the Ssortingng elements of Ssortingng Arrays for( int i = 0; i < listOfArrayList.size(); i++ ) { for( int j = 0; j < listOfArrayList.get(i).length; j++ ) System.out.printf(" $ " + listOfArrayList.get(i)[j]); System.out.println(); } } } 

    Et la sortie est la suivante;

      $ line1: test Ssortingng 1 $ line1: test Ssortingng 2 $ line1: test Ssortingng 3 $ line2: test Ssortingng 1 $ line3: test Ssortingng 1 $ line3: test Ssortingng 2 $ line3: test Ssortingng 3 $ line3: test Ssortingng 4 $ line4: test Ssortingng 1 $ line4: test Ssortingng 2 

    Avertissez également que vous pouvez initialiser un nouveau tableau de Sting comme ci-dessous;

     new Ssortingng[]{ str1, str2, str3,... }; // Assuming str's are Ssortingng objects 

    Donc c'est pareil avec;

     Ssortingng[] newSsortingngArray = { str1, str2, str3 }; // Assuming str's are Ssortingng objects 

    J'ai écrit cette démonstration simplement pour montrer qu'aucun object ArrayList , tous les éléments ne sont des références à différentes instanciations de tableaux de chaînes, de sorte que la longueur de chaque tableau ne doit pas nécessairement être la même, ni importante.

    Une dernière remarque : il est recommandé d'utiliser ArrayList dans une interface List, à la place de celle utilisée dans votre question.

    Il vaudra mieux utiliser l'interface List comme ci-dessous;

      //Declaration of an ArrayList of Ssortingng Arrays List listOfArrayList = new ArrayList(); 
    1. Créez l’ ArrayList action ArrayList comme ArrayList action .

      Dans JDK 1.5 ou version ultérieure, utilisez le nom de référence ArrayList .

      Dans JDK 1.4 ou une version inférieure, utilisez le nom de référence ArrayList .

    2. Spécifiez les spécificateurs d’access:

      • public, accessible partout
      • privé, accessible dans la classe
      • protégé, accessible dans la classe et différentes sous-classes de paquets
    3. Ensuite, spécifiez la référence dans laquelle il sera affecté

       action = new ArrayList(); 
    4. Dans JVM, le new mot-clé allouera de la mémoire à l’exécution pour l’object.

      Vous ne devez pas atsortingbuer la valeur à la déclaration, car vous demandez sans taille fixe.

    5. Enfin, vous pouvez utiliser la méthode add() dans ArrayList. Utiliser comme

       action.add(new ssortingng[how much you need]) 

      Il va allouer la zone de mémoire spécifique en tas.