Ich habe versucht, ein Problem mit Java 8 zu lösen, das ich bereits mit einer einfachen for-Schleife gelöst habe. Ich habe jedoch keine Ahnung, wie ich das machen soll. Das Problem ist:Zwei Texteingabedateien zusammenführen, jede Zeile der Dateien nacheinander. Siehe Beispiel
File1 :
1,sdfasfsf
2,sdfhfghrt
3,hdfxcgyjs
File2 :
10,xhgdfgxgf
11,hcvcnhfjh
12,sdfgasasdfa
13,ghdhtfhdsdf
Ausgabe wie
1,sdfasfsf
10,xhgdfgxgf
2,sdfhfghrt
11,hcvcnhfjh
3,hdfxcgyjs
12,sdfgasasdfa
13,ghdhtfhdsdf
sein sollte ich dies bereits haben im Grunde arbeiten,
Die Kernlogik ist:
List<String> left = readFile(lhs);
List<String> right = readFile(rhs);
int leftSize = left.size();
int rightSize = right.size();
int size = leftSize > rightSize? leftSize : right.size();
for (int i = 0; i < size; i++) {
if(i < leftSize) {
merged.add(left.get(i));
}
if(i < rightSize) {
merged.add(right.get(i));
}
}
- MergeInputs.java
- UnitTest
- Eingabedateien sind in src/test/resources/com/linux/test/merge/Liste der gleichen Repo (nur zwei Links schreiben erlaubt)
jedoch prahlte ich, ich könnte mach das einfach mit Streams und jetzt bin ich mir nicht sicher, ob das überhaupt möglich ist.
Hilfe wird sehr geschätzt.
Nicht als Antwort, da es keine Streams verwendet, aber dies ist einfach und weniger fehleranfällig mit Apache Commons Iterator-Dienstprogramme: 'Liste merged = IteratorUtils.toList (IteratorUtils.zipingIterator (left.iterator(), right.iterator())); ' –