如何通过jdk1.6,google或apache commons集合或其他任何方式将O(1)中的两个链接列表与Java连接起来?例如,在jdk中,只有addAll方法是O(n).
我想念的另一个功能是连接两个列表,其中每个列表可以按相反的顺序排列.为了说明这一点,假设两个列表a-> b-> c和e-> f-> g可以合并为
你知道这样的列表实现还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法).这些功能在我看来非常明显,希望我不会错过一些愚蠢的东西.
正如MicSim指出的那样,在Java中使用Merge两个列表的常量时间是相关的,但不是真正的重复!现在的问题是:
如果我有:linkedlist1= 1,2,3,4;和 linkedlist2= 5,6,7;
如果我调用,我能够以这种方式将linkedlist2附加到linkedlist1的末尾:linkedlist2.set(0,9999) 它会变为linkedlist2 = [999,6,7]并 linkedlist1变为[1,2,3,4,9999,7,8];?
那可能吗 ?或者我确实需要另一种结构?
以下代码不起作用:
List<Double> l1 = new LinkedList<Double>(Arrays.asList(1.0,2.0));
List<Double> l2 = new LinkedList<Double>(Arrays.asList(3.0,4.0));
l1.addAll(l2);
System.out.println(l1);
l2.set(0, 9.0);
System.out.println(l1);
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
[1.0, 2.0, 3.0, 4.0]
[1.0, 2.0, 3.0, 4.0]
Run Code Online (Sandbox Code Playgroud)