在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)
是否有一个提供此方法的库.最简单的方法是遍历数组并将每个列表累加为一个
可能有一个库,但只包括这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)
您可以使用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)