web-dev-qa-db-fra.com

ArrayList de la matrice int en java

Je suis nouveau sur le concept d'arraylist. J'ai fait un programme court qui est comme suit:

ArrayList<int[]> arl=new ArrayList<int[]>();
int a1[]={1,2,3};
arl.add(0,a1);
System.out.println("Arraylist contains:"+arl.get(0));

Il donne la sortie: Arraylist contains:[I@3e25a5

Maintenant mes questions sont:

  1. Comment afficher la valeur correcte, à savoir 1 2 3.
  2. Comment puis-je accéder au seul élément du tableau a1, c’est-à-dire si je veux connaître la valeur de a1 [1].
46
amv

Tout d’abord, pour initialiser un conteneur, vous ne pouvez pas utiliser un type primitif (par exemple, int; vous pouvez utiliser int[] mais comme vous voulez juste un tableau d’entiers, je ne vois aucune utilité à cela). Au lieu de cela, vous devriez utiliser Integer, comme suit:

ArrayList<Integer> arl = new ArrayList<Integer>();

Pour ajouter des éléments, utilisez simplement la fonction add:

arl.add(1);  
arl.add(22);
arl.add(-2);

Enfin et surtout, pour imprimer la ArrayList, vous pouvez utiliser la fonctionnalité intégrée de toString():

System.out.println("Arraylist contains: " + arl.toString());  

Si vous souhaitez accéder à l'élément i , où i est un index compris entre 0 et la longueur du tableau-1, vous pouvez effectuer les opérations suivantes:

int i = 0; // Index 0 is of the first element
System.out.println("The first element is: " + arl.get(i));

Je suggère de lire d'abord sur les conteneurs Java avant de commencer à travailler avec eux. 

65
Raul Rene
  1. Utilisez Arrays.toString( arl.get(0) ) .

  2. arl.get(0)[1]

22
trutheality

Plus simple que ça.

List<Integer> arrayIntegers = new ArrayList<>(Arrays.asList(1,2,3));

arrayIntegers.get(1);

Dans la première ligne, vous créez l'objet et dans le constructeur, vous passez un paramètre de tableau à List.

Dans la deuxième ligne, vous avez toutes les méthodes de la classe List: .get (...)

11

En Java, un tableau est un objet. Par conséquent, l'appel à arl.get (0) renvoie un objet primitif int [] qui apparaît en tant qu'ascii dans votre appel à System.out. 

La réponse à votre première question est donc

System.out.println("Arraylist contains:"+Arrays.toString( arl.get( 0 ) ) );

Si vous recherchez des éléments particuliers, l'objet int [] renvoyé doit être référencé en tant que tel ... La réponse à votre deuxième question serait quelque chose comme:

    int[] contentFromList = arl.get(0);
    for (int i = 0; i < contentFromList.length; i++) {
        int j = contentFromList[i];
        System.out.println("Value at index - "+i+" is :"+j);
    }
5
Everyone

Vous devez utiliser <Integer> au lieu de <int>:

int a1[] = {1,2,3};
ArrayList<Integer> arl=new ArrayList<Integer>();
for(int i : a1) {
    arl.add(i);        
    System.out.println("Arraylist contains:" + arl.get(0));
}
3
Nour

Tout le monde a raison. Vous ne pouvez pas imprimer directement un objet int [], mais il est également inutile de ne pas utiliser ArrayList de tableaux de nombres entiers.

En utilisant,

Arrays.toString(arl.get(0))

signifie scinder l'objet String en une sous-chaîne si vous souhaitez insérer un élément intermédiaire, tel qu'une virgule.

Voici ce que je pense que amv cherchait d'un point de vue de tableau int. 

System.out.println("Arraylist contains: " 
    + arl.get(0)[0] + ", " 
    + arl.get(0)[1] + ", " 
    + arl.get(0)[2]);

Cette réponse est un peu en retard pour amv mais peut toujours être utile aux autres.

2
user2603432

La mise en place:

    List<int[]> intArrays=new ArrayList<>();
    int anExample[]={1,2,3};
    intArrays.add(anExample);

À récupérer un seul tableau int [] dans la liste de tableaux par index:

    int[] anIntArray = intArrays.get(0); //'0' is the index
    //iterate the retrieved array an print the individual elements
    for (int aNumber : anIntArray ) { 
        System.out.println("Arraylist contains:" + aNumber );
    }

À récupérer tous les tableaux int [] dans la liste de tableaux:

    //iterate the ArrayList, get and print the elements of each int[] array  
    for(int[] anIntArray:intArrays) {
       //iterate the retrieved array an print the individual elements
       for (int aNumber : anIntArray) {
           System.out.println("Arraylist contains:" + aNumber);
       }
}

Le formatage de sortie peut être effectué en fonction de cette logique. Bonne chance!!

1
mtebong

Java.util.Arrays.toString() convertit les tableaux Java en chaîne:

System.out.println("Arraylist contains:"+Arrays.toString(arl.get(0)));
0
Rahul Naik
ArrayList<Integer> list = new ArrayList<>();
int number, total = 0;

for(int i = 0; i <= list.size(); i++){
    System.out.println("Enter number " + (i + 1) + " or enter -1 to end: ");
    number = input.nextInt();

    list.add(number);

    if(number == -1){
        list.remove(list.size() - 1);
        break;
    }
}
System.out.println(list.toString());

for(int i: list){
    System.out.print(i + "  ");
    total+= i;
}
System.out.println();
System.out.println("The sum of the array content is: " + total);
0
GIGO

Réponse à la question 1

// Get the array of integers you put at position 0 of the arraylist
int[] newArray = arl.get(0);

// Print the items in the array (in this case, the array is "newArray")
for (int number : newArray) {
    System.out.print(number);
}

Réponse à la question 2

// Get the array of integers you put at position 0 of the arraylist
int[] newArray = arl.get(0);

// prints the 1st item in the array
System.out.println(newArray[0]);

// prints the 2nd item in the array
System.out.println(newArray[1]); 
0
Chizoba Ogbonna