首页 > 解决方案 > 投射嵌套列表> 到嵌套的 ArrayList>

问题描述

List<List<T>>投射到的最佳/最高效的方式是ArrayList<ArrayList<T>>什么?

假设我有一个界面IFoo.getListOfLists(),它会给我List<List<T>>. 我们还假设我知道这些List<List<T>>实际上是ArrayList<ArrayList<T>>.

一个简单的解决方案是:

    ArrayList<ArrayList<T>> result = new ArrayList<>();
    for (List<T> arrayList : IFoo.getListOfLists()) {
        result.add((ArrayList<T>)arrayList);
    }

但是有更好的方法吗?特别是,因为我已经知道这些实例实际上是ArrayLists。

标签: javalistarraylistcasting

解决方案


由于List运行时不存在的类型信息,您可以简单地转换为ArrayList

import java.util.ArrayList;
import java.util.List;

public class CastListList {

    public static void main(final String[] args) {
        final List<List<String>> strings = new ArrayList<>();
        strings.add(new ArrayList<>());
        strings.get(0).add("Hello World!");

        final ArrayList<ArrayList<String>> arrayList = cast(strings);
        System.out.println(arrayList.get(0).get(0));
    }

    @SuppressWarnings({ "unchecked", "rawtypes" })
    private static <T> ArrayList<ArrayList<T>> cast(final List<List<T>> list) {
        return (ArrayList) list;
    }
}

推荐阅读