我试过了:
List splice(List l1, List l2){
List l3 = new LinkedList();
return l3;
}
List append(List l1, List l2) {
List to_return = copy(l1);
List l3 = copy(l2);
while (true) {
if (l3.isEmpty())
return to_return;
to_return = append1(to_return,hd(l3));
l3 = tl(l3);
}
}
接下来我该怎么办?如果我输入[1,2,3]
和[a,b]
,我想获得[1,a,2,b,3]
。
答案 0 :(得分:1)
我真的不了解你的代码,但你说
如果我输入[1,2,3]和[a,b],我想得到[1,a,2,b,3]。
这可以通过
来实现static <T> List<T> interleave(List<T> list1, List<T> list2) {
List<T> newList = new ArrayList<T>();
List<T> shortOne = list1.size() < list2.size() ? list1 : list2;
List<T> longOne = list1.size() < list2.size() ? list2 : list1;
for (int i = 0; i < shortOne.size(); i++) {
newList.add(list1.get(i));
newList.add(list2.get(i));
}
for (int i = shortOne.size(); i < longOne.size(); i++) {
newList.add(longOne.get(i));
}
return newList;
}
修改强>
根据您使用的List
实施方式,本文中接受答案的方法可能更有效:Java: Interleave two integer based arraylists -> good approach?