私が使用しているメソッドは、ソートされた2つのリストを取り、ソート順に2つの元のリストのすべての要素を含む単一のリストを返します。Javaのイテレータを使用したソート済みリストのマージ
たとえば、元のリストが(1,4,5)および(2,3,6)の場合、結果リストは(1,2,3,4,5,6)となります。
紛失しているものがありますか?
public static<E extends Comparable<E>> List<E> mergeSortedLists(List<E> a, List<E> b) {
List<E> result = new ArrayList<E>();
PushbackIterator<E> aIter = new PushbackIterator<E>(a.iterator());
PushbackIterator<E> bIter = new PushbackIterator<E>(b.iterator());
while (aIter.hasNext() && bIter.hasNext()) {
if (aIter.next().compareTo(bIter.next()) < 0) {
result.add(aIter.next());
}
if (bIter.next().compareTo(bIter.next()) > 0){
result.add(bIter.next());
}
}
while (aIter.hasNext()) {
result.add(aIter.next());
}
while (bIter.hasNext()) {
result.add(bIter.next());
}
return result;
}
非常に多くの理由から、これは機能しません。例えば、指定されたステップに対して 'next()'を2回呼び出しています。 –
なぜあなたは 'PushbackIterator'を使用しているのか忘れましたか? – shmosel