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:
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.
Utilisez Arrays.toString( arl.get(0) )
.
arl.get(0)[1]
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 (...)
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);
}
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));
}
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.
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!!
Java.util.Arrays.toString()
convertit les tableaux Java en chaîne:
System.out.println("Arraylist contains:"+Arrays.toString(arl.get(0)));
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);
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]);