当我们使用 java.util.Arrays.asList() 从数组创建列表时,列表是可变的。
是和否:可以通过调用修改列表
list.set(index, element);
但列表可能不会在结构上进行修改。这意味着不可能向列表中添加元素或从列表中删除元素。原因很简单,列表仍然是由数组支持的,数组的大小可能不会改变。
当我们需要一个固定大小的可变集合时,我们会选择 Array
这就是这里的关键点:数组不是Collection。 Arrays.asList 方法主要充当“数组世界”和“集合世界”之间的“桥梁”。
Arrays.asList 方法允许您将数据传递给需要 Collection 的方法:
// A method that expects a collection:
void process(List<String> strings) { ... }
void call()
{
String array[] = new String[] { "A", "B", "C" };
// Pass the array (as a list) to the method:
process(Arrays.asList(array));
}
此应用案例包括从数组创建其他集合。例如,如果您有一个数组并想创建一个包含数组元素的Set,您可以
String array[] = new String[] { "A", "B", "C" };
Set<String> set = new HashSet<String>();
for (String s : array)
{
set.add(s);
}
但是使用Arrays.asList 方法可以更方便地做到这一点:
Set<String> set = new HashSet<String>(Arrays.asList(array));
Arrays.asList 方法可以说是 Collection#toArray 方法的对应物,它的工作方向相反(尽管这种方法通常涉及创建和填充一个 new 数组,而 @ 987654333@ 方法只是“包装”一个数组并让它“看起来像”List)。