从枚举构建List <t> <! - ?扩展T - > </t>

时间:2014-10-20 10:46:57

标签: java templates

如何从List<T>构建Enumeration<? extends T>

我发现的最佳方式是

Enumeration<? extends T> toBeConverted;
List<T> = new ArrayList<>(Collections.list(toBeConverted));

但是这会创建两个ListCollections.list方法中的一个,以及ArrayList的构造函数中的另一个)。有没有办法避免临时副本?

(其他解决办法是:

List<T> list = new ArrayList<T>;
while (toBeConverted.hasMoreElements) { list.add(toBeConverted.nextElement()); }

但我认为这太冗长了......如果可能的话,我想要一个带有构造函数的解决方案。

1 个答案:

答案 0 :(得分:0)

方法Collections.list制作新的ArrayList。

public static <T> ArrayList<T> list(Enumeration<T> e) {
    ArrayList<T> l = new ArrayList<>();
    while (e.hasMoreElements())
        l.add(e.nextElement());
    return l;
}

您可以在没有构造函数的情况下调用Collections.list方法。

Enumeration<? extends T> toBeConverted;
List<T> = (List<T>) Collections.list(toBeConverted);