Java 转换集合<;T>;到列表<;T>;

Java 转换集合<;T>;到列表<;T>;,java,java-8,Java,Java 8,给定类型为T的集合,Java 8惯用的方法是如何将其转换为类型为T的列表?是下面的吗 Collection<Foo> f; f.stream().collect(Collectors.toList()); 集合f; f、 stream().collect(Collectors.toList()); 这将正常工作。然而,java以前版本的惯用方式仍然更简单,完全可以理解 Collection<Foo> f; new ArrayList<>(f); 集合f;

给定类型为
T
集合
,Java 8惯用的方法是如何将其转换为类型为
T
列表
?是下面的吗

Collection<Foo> f;
f.stream().collect(Collectors.toList());
集合f;
f、 stream().collect(Collectors.toList());

这将正常工作。然而,java以前版本的惯用方式仍然更简单,完全可以理解

Collection<Foo> f;
new ArrayList<>(f);
集合f;
新ArrayList(f);

这将正常工作。然而,java以前版本的惯用方式仍然更简单,完全可以理解

Collection<Foo> f;
new ArrayList<>(f);
集合f;
新ArrayList(f);

你为什么要这么做?您是否希望在如何添加/删除元素方面获得一些性能保证?两者都是接口,但请相信,您不应该假设您要转换的内容实际上是一个列表。@JacekLaskowski您要转换的内容不一定是一个列表;不过,结果肯定是一个。您希望这样做的原因包括:a)需要保证集合中项目的顺序;b)需要调用一个方法,当您不确定自己拥有什么类型的集合时,该方法需要列表而不强制转换;以及c)出于某种原因需要特定类型的列表。谢谢!所有的观点都是有效的和有意义的。你为什么要这么做呢?您是否希望在如何添加/删除元素方面获得一些性能保证?两者都是接口,但请相信,您不应该假设您要转换的内容实际上是一个列表。@JacekLaskowski您要转换的内容不一定是一个列表;不过,结果肯定是一个。您希望这样做的原因包括:a)需要保证集合中项目的顺序;b)需要调用一个方法,当您不确定自己拥有什么类型的集合时,该方法需要列表而不强制转换;以及c)出于某种原因需要特定类型的列表。谢谢!所有的观点都是有效的和有意义的。