有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

将LinkedList前置到另一个的本机Java方法?

我在Java中有两个LinkedList,我想将一个列表中的所有元素前置到另一个列表中。在O(1)时间里,有没有一种本土的方法可以做到这一点?我知道需要做的就是将第一个列表的最后一个指针设置为第二个列表的第一个指针,但似乎没有一个本地方法可以做到这一点

此外,为了增加复杂性,我需要一种方法将列表预先添加到另一个列表中,而不是附加它。我有列表A和B,我需要把B的所有元素都放在列表A的前面。我不能只把A的元素加到B的末尾,因为我想修改列表A

有没有一种不用实现我自己的LinkedList就能做到这一点的方法


共 (1) 个答案

  1. # 1 楼答案

    没有预定义的方法可以在O(1)时间内完成。但是,您可以在O(N)中使用^{}方法通过使用0索引来实现:

    LinkedList<Integer> source = new LinkedList<>();
    source.add(1);
    source.add(2);
    LinkedList<Integer> target = new LinkedList<>();
    target.add(3);
    target.add(4);
    
    target.addAll(0, source);
    System.out.println(target); // [1, 2, 3, 4]
    

    上面是O(source N),因为addAll将迭代集合参数中的数据