如何使用Java通过jdk1.6、Google或Apache Commons集合等方式以O(1)拼接两个链表?例如,在jdk中只有O(n)的addAll方法。
我错过的另一个功能是连接两个列表,其中每个列表都可以是反向的。为了说明这一点,假设有两个列表a->b->c和e->f->g,可以合并成:
1. a->b->c->e->f->g 2. a->b->c->g->f->e 3. c->b->a->e->f->g 4. c->b->a->g->f->e 你知道是否有这样的列表实现,还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法)。这些特性对我来说似乎非常明显,希望我没有错过什么愚蠢的东西。
正如MicSim指出的问题Merge two lists in constant time in Java相关但并不是真正的重复!现在的问题是:
1. 是否可以使用其他集合库实现? 2. 如何连接相反的列表?
我错过的另一个功能是连接两个列表,其中每个列表都可以是反向的。为了说明这一点,假设有两个列表a->b->c和e->f->g,可以合并成:
1. a->b->c->e->f->g 2. a->b->c->g->f->e 3. c->b->a->e->f->g 4. c->b->a->g->f->e 你知道是否有这样的列表实现,还是我必须实现自己的链表?了解如何调整现有解决方案也很有帮助(例如,jdk LinkedList只有很多私有方法)。这些特性对我来说似乎非常明显,希望我没有错过什么愚蠢的东西。
正如MicSim指出的问题Merge two lists in constant time in Java相关但并不是真正的重复!现在的问题是:
1. 是否可以使用其他集合库实现? 2. 如何连接相反的列表?
firstList.getLastElement().setNextElement(secondList.getFirstElement())
。 - RomansecondList
的大小。 - David Soroko