J'essaye de renvoyer les 3 premiers nombres de ce arrayList mais comme c'est le cas, j'ai tout le tableau.
ArrayList<Integer> list = new ArrayList<Integer>(); for (int i=0; i<10; i++) { list.add(new Integer(i)); } Collections.shuffle(list); for (int i=0; i<3; i++) { System.out.println(list.get(i)); } System.out.println(list); return list;
Là, j'ai vu quelques exemples utilisant pick () mais je ne Je ne comprends pas. Quelqu'un peut-il expliquer?
3 Réponses :
Utilisez une sous-liste, si vous ne voulez que ces trois premiers éléments.
return list.subList(0, 3);
pour renvoyer les 3 premiers devrais-je utiliser: return list.subList (0, 2); ?
@Maluco, non. Le dernier index est non inclusif
Tout d'abord, préférez une List
(l'interface) à ArrayList
(le type concret). Deuxièmement, vous pouvez générer la plage souhaitée avec un IntStream
. Ensuite, mélangez-le, puis ne renvoyez que trois éléments avec un appel limit (long)
. Comme,
List<Integer> list = IntStream.range(0, 10).boxed().collect(Collectors.toList()); Collections.shuffle(list); return list.stream().limit(3).collect(Collectors.toList());
Une autre façon de le faire avec Java 8
serait de diffuser 3 nombres aléatoires de 0 à 10 et de les rassembler sous forme de liste, quelque chose comme:
//Stream 3 unique numbers from 0 to 10 and collect them as a list List<Integer> listOfNumbers = new Random().ints(0, 11).distinct().limit(3).boxed().collect(Collectors.toList()); System.out.println(listOfNumbers);
Unique
List<Integer> listOfNumbers = new Random().ints(3, 0, 11).boxed().collect(Collectors.toList()); System.out.println(listOfNumbers);
Vous pouvez utiliser un ensemble de hachage
Votre code imprime en fait les trois premiers chiffres. Vous choisissez ensuite d'imprimer et de renvoyer la liste entière.
Avez-vous besoin des 3 premiers entiers uniques ou seulement des 3 premiers entiers?
@FailingCoder,
System.out.println (list)
imprime en fait la liste en utilisant l'implémentation dansAbstractCollection.toString ()
.Vraiment? Je n'en savais rien. Je ne pense pas que ce soit la même chose avec
java.util.ArrayList
, non?ArrayList
étend cette classe à traversAbstractList
.Jetez un œil à ma réponse en une ligne, @Maluco.