List.of返回Java9中List的实现

时间:2018-03-29 15:53:28

标签: java list java-9

Java 9添加了工厂集合方法。所以我们可以编码:

List<String> list= List.of("A","B","C");

我想知道它返回的List的哪个实现,ArrayList或LinkedList? 我们可以指定一种方式吗?

2 个答案:

答案 0 :(得分:3)

  

我想知道它返回List的哪个实现,ArrayListLinkedList

List0List1List2ListN的每个类都延伸AbstractImmutableList<E> AbstractList<E>的孩子。

class ListN<E> extends AbstractImmutableList<E>
class AbstractImmutableList<E> extends AbstractList<E>

实际上,它在内部包含一个数组。所以它以某种方式类似于ArrayList

static final class ListN<E> extends AbstractImmutableList<E> {
    @Stable
    private final E[] elements;
}
  

我们可以指定一种方法吗?

您无法更改此行为。但是你可以用适当的构造函数包装它。请注意,在这种情况下,您将失去不变性。

List<?> list = new LinkedList<>(List.of(...));
List<?> list = new ArrayList<>(List.of(...));

答案 1 :(得分:0)

我可以在官方文档中看到它返回一个包含任意数量元素的不可变列表

我建议这个技巧创建一个ArrayList或LinkedList

的实例
 ArrayList<String> list= new ArrayList<>(List.of("A","B","C"));

 LinkedList<String> list= new ArrayList<>(List.of("A","B","C"));

查看此处的官方文档https://docs.oracle.com/javase/9/docs/api/java/util/List.html