Java中是否有任何实用程序函数可以将List<Object[]>
转换为List<Object>
答案 0 :(得分:2)
您可以轻松自己写一个:
public static<T> List<T> append (List<T[]> input) {
List<T> res = new ArrayList<T>();
for(T[] subarr : input) {
if(subarr != null) {
int n = subarr.length;
for(int i = 0; i < n; i++) {
res.add(subarr[i]);
}
}
}
return res;
}
该函数追加不同的数组,忽略null
数组,但null
元素不被忽略。因此,如果输入是[null,[a,b],[null,null],[c,null,d],null]
。输出为[a,b,null,null,c,null,d]
。
答案 1 :(得分:2)
不,没有方法可以直接为您完成此操作。您可以编写嵌套for循环或使用流API的flatMap,如下所示:
List<Object> flat = objArrs.stream()
.flatMap(Stream::of)
.collect(Collectors.toList());
答案 2 :(得分:1)
没有
为什么不自己编写这个功能?它可能比询问这个问题并等待答案更快。
答案 3 :(得分:1)
在Java 8中,您可以使用Streams:
List<Object[]> list = ...
List<Object> l = list.stream()
.flatMap(arr -> Stream.of(arr))
.collect(Collectors.toList());
答案 4 :(得分:1)
正如其他人已经说过的那样,没有任何实用工具,创建一个自己不会很难,例如使用旧学校进行循环:
public List<Object> flatten( List<Object[]> source )
{
// if ( source == null ) return null; // which check you use it up to you
List<Object> result = new ArrayList<Object>();
if ( source == null ) return result; // Personally I like this check
for ( Object[] array: source )
{
if ( array == null ) continue; // skip nulls
for ( Object object: array )
{
result.add(object);
}
}
return result;
}