java中的N列表联盟

Abh*_*she 3 java collections

在java中创建N列表联合的最佳方法是什么?

例如

List<Integer> LIST_1 = Lists.newArrayList(1);

List<Integer> LIST_2 = Lists.newArrayList(2);

List<Integer> LIST_3 = Lists.newArrayList(3);

List<Integer> LIST_4 = Lists.newArrayList(4);

List<Integer> LIST_1_2_3_4 = Lists.newArrayList(1,2,3,4);

assert LIST_1_2_3_4.equals(union(LIST_1,LIST_2,LIST_3,LIST_4)); 

The union method will take a var args parameter

<Item> List<Item> union(List<Item> ... itemLists)
Run Code Online (Sandbox Code Playgroud)

是否有一个提供此方法的库.最简单的方法是遍历数组并将每个列表累加为一个

Mar*_*o13 6

可能有一个库,但只包括这3行代码可能不值得另一个依赖...

private static <Item> List<Item> union(List<Item> ... itemLists)
{
    List<Item> result = new ArrayList<Item>();
    for (List<Item> list : itemLists) result.addAll(list);
    return result;
}
Run Code Online (Sandbox Code Playgroud)


Tho*_*mas 5

您可以使用Google Guava

List<Integer> joined = new ArrayList<>( Iterables.concat(LIST_1, LIST_2, LIST_3, LIST_4) );
Run Code Online (Sandbox Code Playgroud)

或仅用于比较:

Iterables.elementsEqual( LIST_1_2_3_4, Iterables.concat(LIST_1, LIST_2, LIST_3, LIST_4) );
Run Code Online (Sandbox Code Playgroud)