Selon l'environnement, vous devrez peut-être écrire un ancien code exprès. J'ai eu l'occasion d'écrire du code en Java7 qui divise la liste et exécute le processus, je l'ai donc posté pour la première fois.
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Nombre de listes à traiter à la fois
for (int i = 0; i < sampleList.size(); i += size) {
List<String> list = new ArrayList<>(
sampleList.subList(i, Math.min(i + size, sampleList.size()))
);
System.out.println(list); //Effectuer le traitement ici
}
}
}
[aaa, bbb] // sampleList.subList(0, 2)
[ccc, ddd] // sampleList.subList(2, 4)
[eee] // sampleList.subList(4, 5)
subList (int from, int to)
renvoie une liste de from
(inclus) à to
(non inclus).
La liste à traiter est acquise en augmentant le nombre de divisions de «de» et «à» par l'instruction for.
Math.min (int a, int b)
renvoie la plus petite des deux valeurs int.
Si la taille de la liste n'est pas divisible par le nombre de divisions, alors vous devez considérer to
,
Pour la dernière itération, nous mettons sampleList.size ()
dans to
.
La liste obtenue par subList
partage les données avec la valeur d'origine. Autrement dit, changer la valeur de list
changera la valeur de sampleList
(Exemple 1).
Cependant, en changeant après nouveau, vous ne pouvez changer que la sous-liste sans changer la liste d'origine (exemple 2).
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Nombre de listes à traiter à la fois
System.out.println(sampleList); //Avant le traitement
for (int i = 0; i < sampleList.size(); i += size) {
List<String> list = sampleList.subList(i, Math.min(i + size, sampleList.size()));
list.set(0, "zzz"); //Exécution du traitement
System.out.println(list);
}
System.out.println(sampleList); //Après le traitement
}
}
[aaa, bbb, ccc, ddd, eee] //Avant le traitement
[zzz, bbb]
[zzz, ddd]
[zzz]
[zzz, bbb, zzz, ddd, zzz] //Après le traitement
Comme mentionné ci-dessus, suite à la mise à jour de "list", on peut voir que "sampleList" a également été mis à jour.
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Nombre de listes à traiter à la fois
System.out.println(sampleList); //Avant le traitement
for (int i = 0; i < sampleList.size(); i += size) {
List<String> list = new ArrayList<>(
sampleList.subList(i, Math.min(i + size, sampleList.size()))
);
list.set(0, "zzz");
System.out.println(list);
}
System.out.println(sampleList); //Après le traitement
}
}
[aaa, bbb, ccc, ddd, eee] //Après le traitement
[zzz, bbb]
[zzz, ddd]
[zzz]
[aaa, bbb, ccc, ddd, eee] //Après le traitement
Comme mentionné ci-dessus, vous pouvez voir que changer list
ne change pas sampleList
.
Recommended Posts