我们创建一个Set为:
Set myset = new HashSet()
我们如何在Java中创建一个列表?
我们创建一个Set为:
Set myset = new HashSet()
我们如何在Java中创建一个列表?
当前回答
此外,如果你想创建一个列表,其中有东西(尽管它将是固定大小):
List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
其他回答
在Java 8中
创建一个固定大小的非空列表(不支持添加、删除等操作):
List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported
创建一个非空的可变列表:
List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));
在Java 9中
使用一个新的List.of(…)静态工厂方法:
List<Integer> immutableList = List.of(1, 2);
List<Integer> mutableList = new ArrayList<>(List.of(3, 4));
在Java 10中
使用局部变量类型推断:
var list1 = List.of(1, 2);
var list2 = new ArrayList<>(List.of(3, 4));
var list3 = new ArrayList<String>();
并遵循最佳实践……
不要使用原始类型
从Java 5开始,泛型就成为了语言的一部分——你应该使用它们:
List<String> list = new ArrayList<>(); // Good, List of String
List list = new ArrayList(); // Bad, don't do that!
编程到接口
例如,编程到List接口:
List<Double> list = new ArrayList<>();
而不是:
ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!
List和Set一样只是一个接口。
HashSet是Set的一种实现,它具有添加/查找/删除性能方面的某些属性,ArrayList是List的裸实现。
如果你看了相关接口的文档,你会发现“所有已知的实现类”,你可以决定哪一个更适合你的需求。
可能是数组列表。
用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<String> messages = Arrays.asList("bla1", "bla2", "bla3");
Or:
List<String> list1 = Lists.mutable.empty(); // Empty
List<String> list2 = Lists.mutable.of("One", "Two", "Three");
一个例子:
List somelist = new ArrayList();
您可以查看javadoc for List,并找到包含在java api中的List接口的所有已知实现类。