Abhängig von der Umgebung müssen Sie möglicherweise absichtlich alten Code schreiben. Ich hatte die Möglichkeit, Code in Java7 zu schreiben, der die Liste teilt und den Prozess ausführt, also habe ich ihn zum ersten Mal veröffentlicht.
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Anzahl der gleichzeitig zu verarbeitenden Listen
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); //Führen Sie hier die Verarbeitung durch
}
}
}
[aaa, bbb] // sampleList.subList(0, 2)
[ccc, ddd] // sampleList.subList(2, 4)
[eee] // sampleList.subList(4, 5)
subList (int from, int to)
gibt eine Liste von from
(enthalten) bis to
(nicht enthalten) zurück.
Die zu verarbeitende Liste wird durch Erhöhen der Anzahl der Unterteilungen von "von" und "nach" durch die for-Anweisung erfasst.
Math.min (int a, int b)
gibt den kleineren der beiden int-Werte zurück.
Wenn die Größe der Liste nicht durch die Anzahl der Unterteilungen teilbar ist, müssen Sie "bis" berücksichtigen.
Für die letzte Iteration setzen wir sampleList.size ()
in to
.
Die von subList
erhaltene Liste teilt Daten mit dem ursprünglichen Wert. Das heißt, wenn Sie den Wert von "list" ändern, ändert sich auch der Wert von "sampleList" (Beispiel 1).
Durch Ändern nach Neu können Sie jedoch nur die Unterliste ändern, ohne die ursprüngliche Liste zu ändern (Beispiel 2).
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Anzahl der gleichzeitig zu verarbeitenden Listen
System.out.println(sampleList); //Vor der Verarbeitung
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"); //Ausführung verarbeiten
System.out.println(list);
}
System.out.println(sampleList); //Nach der Behandlung
}
}
[aaa, bbb, ccc, ddd, eee] //Vor der Verarbeitung
[zzz, bbb]
[zzz, ddd]
[zzz]
[zzz, bbb, zzz, ddd, zzz] //Nach der Behandlung
Wie oben erwähnt, ist als Ergebnis der Aktualisierung von "list" ersichtlich, dass "sampleList" ebenfalls aktualisiert wurde.
public class Sample {
public static void main(String[] args) {
List<String> sampleList = Arrays.asList("aaa", "bbb", "ccc", "ddd", "eee");
int size = 2; //Anzahl der gleichzeitig zu verarbeitenden Listen
System.out.println(sampleList); //Vor der Verarbeitung
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); //Nach der Behandlung
}
}
[aaa, bbb, ccc, ddd, eee] //Nach der Behandlung
[zzz, bbb]
[zzz, ddd]
[zzz]
[aaa, bbb, ccc, ddd, eee] //Nach der Behandlung
Wie oben erwähnt, ist ersichtlich, dass das Ändern der "Liste" die "sampleList" nicht ändert.
Recommended Posts