繁体   English   中英

将对象数组列表转换为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM