![](/img/trans.png)
[英]how to convert list of model objects to list of object arrays java
[英]Convert List of object arrays to list of objects in Java
Java中是否有任何实用程序功能可将List<Object[]>
转换为List<Object>
您可以轻松地自己写一个:
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]
。
不,没有方法可以直接为您执行此操作。 您可以编写嵌套的for循环或使用流API的flatMap,如下所示:
List<Object> flat = objArrs.stream()
.flatMap(Stream::of)
.collect(Collectors.toList());
没有。
为什么不自己编写函数呢? 这可能比问这个问题和等待答案要快。
在Java 8中,您可以使用Streams做到这一点:
List<Object[]> list = ...
List<Object> l = list.stream()
.flatMap(arr -> Stream.of(arr))
.collect(Collectors.toList());
正如其他人已经说过的那样,这里没有实用程序,并且自己创建一个应用程序也不会很困难,例如使用旧式的循环:
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.