我们创建一个Set为:
Set myset = new HashSet()
我们如何在Java中创建一个列表?
我们创建一个Set为:
Set myset = new HashSet()
我们如何在Java中创建一个列表?
当前回答
此外,如果你想创建一个列表,其中有东西(尽管它将是固定大小):
List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
其他回答
用Java 8做同样的事情有更多的选择,不是更好,也不是更差,只是不同,如果你想用列表做一些额外的工作,Streams将为你提供更多的选择(过滤,映射,减少等)。
List<String> listA = Stream.of("a", "B", "C").collect(Collectors.toList());
List<Integer> listB = IntStream.range(10, 20).boxed().collect(Collectors.toList());
List<Double> listC = DoubleStream.generate(() -> { return new Random().nextDouble(); }).limit(10).boxed().collect(Collectors.toList());
LinkedList<Integer> listD = Stream.iterate(0, x -> x++).limit(10).collect(Collectors.toCollection(LinkedList::new));
一个例子:
List somelist = new ArrayList();
您可以查看javadoc for List,并找到包含在java api中的List接口的所有已知实现类。
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中。
因为Java 7创建泛型实例有类型推断,所以不需要在赋值的右边复制泛型参数:
List<String> list = new ArrayList<>();
固定大小的列表可以定义为:
List<String> list = Arrays.asList("foo", "bar");
对于不可变列表,你可以使用Guava库:
List<String> list = ImmutableList.of("foo", "bar");
先读这个,再读这个和这个。十有八九你会使用这两种实现之一。
事实上,只需阅读Sun的集合框架指南即可。