Quel est le moyen le plus rapide d’obtenir les n premiers éléments d’une liste stockée dans un tableau?
Considérant cela comme le scénario:
int n = 10;
ArrayList<String> in = new ArrayList<>();
for(int i = 0; i < (n+10); i++)
in.add("foobar");
Option 1:
String[] out = new String[n];
for(int i = 0; i< n; i++)
out[i]=in.get(i);
Option 2:
String[] out = (String[]) (in.subList(0, n)).toArray();
Option 3: Y a-t-il un moyen plus rapide? Peut-être avec Java8-streams?
Parce que l'option 2 crée une nouvelle référence List
, puis crée un tableau d'éléments n
à partir de List
(l'option 1 redimensionne parfaitement le tableau en sortie). Cependant, vous devez d’abord résoudre le problème par un seul bogue. Utilisation <
(ne pas <=
). Comme,
String[] out = new String[n];
for(int i = 0; i < n; i++) {
out[i] = in.get(i);
}
Supposition:
liste - Liste <String>
Utilisation de Java 8 Streams,
pour obtenir les premiers N éléments d'une liste dans une liste,
List<String> firstNElementsList = list.stream().limit(n).collect(Collectors.toList());
pour obtenir les premiers N éléments d'une liste dans un tableau,
String[] firstNElementsArray = list.stream().limit(n).collect(Collectors.toList()).toArray(new String[n]);
Cela dépend principalement de la taille de n
.
Si n==0
, Rien ne vaut l'option n ° 1 :)
Si n est très grand, toArray(new String[n])
est plus rapide.