【发布时间】:2017-06-26 12:59:53
【问题描述】:
我试图使用 java 8 解决一个问题,我已经使用一个简单的 for 循环解决了这个问题。但是我不知道该怎么做。 问题是:
File1 :
1,sdfasfsf
2,sdfhfghrt
3,hdfxcgyjs
File2 :
10,xhgdfgxgf
11,hcvcnhfjh
12,sdfgasasdfa
13,ghdhtfhdsdf
输出应该是这样的
1,sdfasfsf
10,xhgdfgxgf
2,sdfhfghrt
11,hcvcnhfjh
3,hdfxcgyjs
12,sdfgasasdfa
13,ghdhtfhdsdf
我已经基本可以正常工作了,
核心逻辑是:
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
- 输入文件在同一个repo的src/test/resources/com/linux/test/merge/list(只允许发布两个链接)
但是,我吹嘘我可以使用流轻松做到这一点,现在我不确定这是否可以做到。
非常感谢您的帮助。
【问题讨论】:
-
不作为答案发布,因为它不使用流,但使用 apache commons 迭代器实用程序很容易且不易出错:
List<String> merged = IteratorUtils.toList(IteratorUtils.zippingIterator(left.iterator(), right.iterator()));
标签: java-8 stream java-stream