我需要编写一个拼接两个列表对象的函数。例如
public static List splice(List l1, List l2) // takes two lists and interleaves them
例如,输出应为
splice([1,2,3],[a,b,c])
应该列出清单
[1,a,2,b,3,c]
如果两个列表的长度不相等,则函数应尽可能地交错,然后附加较长列表的其余部分。例如,
splice([1,2],[a,b,c,d])
应该[1,a,2,b,c,d]
如何实现这一目标?
答案 0 :(得分:0)
您可以使用迭代器依次移动每个列表:
static <T> List<T> splice(List<T> one, List<T> two) {
Iterator<T> oneIter = one.iterator();
Iterator<T> twoIter = two.iterator();
List<T> result = new ArrayList<T>();
while (oneIter.hasNext() || twoIter.hasNext()) {
if (oneIter.hasNext()) {
result.add(oneIter.next());
}
if (twoIter.hasNext()) {
result.add(twoIter.next());
}
}
return result;
}
您可以这样测试:
public static void main(String[] args) {
System.out.println(splice(
Arrays.asList("one", "two", "three"),
Arrays.asList(1, 2, 3)
));
}
打印:
[one, 1, two, 2, three, 3]