2 回答

TA貢獻(xiàn)1784條經(jīng)驗 獲得超9個贊
CollectionUtils.collate從 Apache Commons使用。
從文檔:
將兩個已排序的集合 a 和 b 合并到一個已排序的列表中,以便保留元素的自然順序。使用標(biāo)準(zhǔn)的 O(n) 合并算法來組合兩個排序列表。
這是一個例子
import static java.util.Arrays.asList;
import java.util.List;
import org.apache.commons.collections4.CollectionUtils;
public class MergeSortedArrays {
public static void main(String[] args) {
Integer a[] = new Integer[]{2, 4, 6, 8, 10};
Integer b[] = new Integer[]{1, 3, 4, 5, 6};
List<Integer> merged = CollectionUtils.collate(asList(a), asList(b));
}
}
該庫還提供了一些更有用的重載
// 1. discards duplicates
static <O extends Comparable<? super O>> List<O> collate(Iterable<? extends O> a, Iterable<? extends O> b, boolean includeDuplicates)
// 2. uses a custom comparator
static <O> List<O> collate(Iterable<? extends O> a, Iterable<? extends O> b, Comparator<? super O> c)
// 3. uses a custom comparator and discards duplicates
static <O> List<O> collate(Iterable<? extends O> a, Iterable<? extends O> b, Comparator<? super O> c, boolean includeDuplicates)

TA貢獻(xiàn)1772條經(jīng)驗 獲得超5個贊
創(chuàng)建一個簡單的合并函數(shù)不是比為這樣一個簡單的任務(wù)添加一個完整的庫更好嗎?
你有 array1(0,1,2,2,3,4) 和 array2(0,2,4,5) 和一個 returnArray 查看前 2 個值并選擇最低的,如果它們相同,選擇 array1
將該值添加到 returnArray。
繼續(xù)從選擇的數(shù)組中刪除該值
重復(fù)過程直到合并
您可以只增加一個整數(shù)而不是刪除效率問題。
編輯哎呀,沒想到你已經(jīng)知道歸并排序了
添加回答
舉報