将对象数组列表转换为Java中的对象列表

时间:2014-12-22 14:22:53

标签: java arrays arraylist

Java中是否有任何实用程序函数可以将List<Object[]>转换为List<Object>

5 个答案:

答案 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;
}