2
我試圖將幾個列表合併爲一個,消除了重複。 Guava中的mergeSorted方法似乎適用於我的情況。但是當我嘗試使用它時,我發現有關我傳遞給該方法的參數的編譯錯誤。我的代碼就像這樣簡單,我有兩個列表,將它們連接成一個,然後嘗試mergeSort它,但是我得到了第四行的編譯錯誤。Guava mergeSorted issue
final List<Integer> first = Lists.newArrayList(1, 2, 3);
final List<Integer> second = Lists.newArrayList(4, 2, 5, 6);
Iterable<Integer> some = Iterables.concat(first, second);
final Iterable all = Iterables.<Integer>mergeSorted(some, comp);
System.out.println(all);
它看起來就像是mergeSorted期待可迭代<?擴展了Iterable <?擴展T >> iterables但該方法的描述似乎表明,輸入可以是所有給定iterables
的合併的內容@Beta公共靜態< T>可迭代< T> mergeSorted(可迭代<?延伸 可迭代<?擴展T >> iterables, 比較器<?super T>比較器)
返回所有給定迭代的合併內容的迭代。 等效條目不會被重複刪除。
由於此方法不對其輸入進行排序,因此調用者必須確保源迭代器的順序爲非下降 。
您能否添加顯示如何對列表進行排序的代碼(如果它們尚未排序)? – artfullyContrived
@artfullyContrived:只需使用'Collections.sort'。 –
欣賞幫助。你會碰巧知道mergeSorted方法的複雜性嗎?它實際上是否在其實現中使用合併排序 –