0

我试过了:

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]and [a,b],我想得到[1,a,2,b,3]

4

1 回答 1

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?

于 2013-02-12T20:06:07.167 回答