我们创建一个Set为:

Set myset = new HashSet()

我们如何在Java中创建一个列表?


当前回答

List是一个类似Set的接口,它有ArrayList和LinkedList作为通用实现。

我们可以创建List为:

 List<String> arrayList = new ArrayList<>();
 List<String> linkedList = new LinkedList<>(); 

我们还可以创建一个固定大小的列表:

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

我们几乎总是使用数组列表而不是LinkedList实现:

LinkedList为对象使用了大量的空间,当我们有很多元素时,它的性能很差。 与ArrayList中的O(1)相比,LinkedList中的任何索引操作都需要O(n)时间。 点击这个链接了解更多信息。

由数组创建的列表。上面的asList不能在结构上被修改,但它的元素仍然可以被修改。

Java 8

根据文档,Collections方法。unmodifiableList返回指定列表的不可修改视图。我们可以这样得到:

Collections.unmodifiableList(Arrays.asList("A", "B", "C"));

Java 9

如果我们使用Java 9,那么:

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

Java 10

如果我们使用的是Java 10,那么使用collections方法。unmodifiableList将返回一个在Java 9中引入的真正不可修改的列表实例。检查这个答案,以了解更多关于集合差异的信息。unmodifiableList vs collector。unmodifiableList在Java 10中。

其他回答

你可以在这里使用双大括号初始化:

List<String> list = new ArrayList<String>(){
  {
   add("a");
   add("b");
  }
};

在Java 9中,你可以执行以下操作来创建一个不可变的List:

List<Integer> immutableList = List.of(1, 2, 3, 4, 5);

List<Integer> mutableList = new ArrayList<>(immutableList);

让我总结一下并补充一下:

JDK

1. new ArrayList<String>();
2. Arrays.asList("A", "B", "C")

番石榴

1. Lists.newArrayList("Mike", "John", "Lesly");
2. Lists.asList("A","B", new String [] {"C", "D"});

不可变列表

1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B")));
2. ImmutableList.builder()                                      // Guava
            .add("A")
            .add("B").build();
3. ImmutableList.of("A", "B");                                  // Guava
4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C"));     // Guava

空不可变列表

1. Collections.emptyList();
2. Collections.EMPTY_LIST;

字符列表

1. Lists.charactersOf("String")                                 // Guava
2. Lists.newArrayList(Splitter.fixedLength(1).split("String"))  // Guava

整数列表

Ints.asList(1,2,3);                                             // Guava

List和Set一样只是一个接口。

HashSet是Set的一种实现,它具有添加/查找/删除性能方面的某些属性,ArrayList是List的裸实现。

如果你看了相关接口的文档,你会发现“所有已知的实现类”,你可以决定哪一个更适合你的需求。

可能是数组列表。

有很多方法可以创建Set和List。HashSet和ArrayList就是两个例子。现在在集合中使用泛型也相当普遍。我建议你看看它们是什么

这是对java内置集合的一个很好的介绍。http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html