使用时如何在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,它可能会或可能不会更好。 一如既往,如果重要,你必须衡量。