使用时如何在List中添加元素Arrays.asList()
我们无法对从Arrays.asList
获取的集合执行.add
或.addAll
操作..只允许删除操作。
那么如果我遇到需要在List
添加新元素而不删除List
前一个元素的情况怎么办? 我怎样才能做到这一点?
使用构造函数创建一个新的ArrayList
:
List list = new ArrayList (Arrays.asList("a", "b"));
一种方法是构造一个新的ArrayList
:
List list = new ArrayList (Arrays.asList(...));
完成后,您可以根据需要修改list
。
集合的构造函数(例如以下示例中的ArrayList)将数组作为列表,并使用该列表的元素构造新实例。
List list = new ArrayList (Arrays.asList(...));
http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#ArrayList(java.util.Collection)
Arrays.asList()生成一个实际由数组支持的列表,它是一个变形为列表的数组。 您可以将其用作列表,但不能对其执行某些操作,例如添加新元素。 所以最好的选择是将它传递给另一个列表obj的构造函数,如下所示:
List list = new ArrayList (Arrays.asList(...));
您可以使用Java8流来绕过中间ArrayList
:
Integer[] array = {1, 2, 3}; List list = Streams.concat(Arrays.stream(array), Stream.of(4)).collect(Collectors.toList());
这应该是非常有效的,因为它可以迭代数组并预先分配目标列表。 对于大型arrays,它可能会或可能不会更好。 一如既往,如果重要,你必须衡量。