有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (6) 个答案

  1. # 1 楼答案

    这不是java.util.ArrayListArrays.asList()返回自己的List实现(对数组进行“写入”更改)

    它是一个固定大小的列表,因此不支持删除

    您可以从中创建一个真正的ArrayList

    new java.util.ArrayList<>(Arrays.asList(someArray));  
    

    我必须承认asList()的工作原理非常令人困惑

  2. # 2 楼答案

    Array.asList()在列表界面中包装数组。该列表仍由阵列支持。数组的大小是固定的——它们不支持添加或删除元素,所以包装器也不能

    医生们没有尽可能清楚地说明这一点,但他们确实说:

    Returns a fixed-size list backed by the specified array.

    “固定大小”位应该是一个提示,提示您不能添加或删除元素:)

    尽管有其他方法(从数组创建新的ArrayList而不需要额外的库),但我个人建议在发布Google Collections Library(或者Guava)时获得它。然后,您可以使用:

    List<Integer> list = Lists.newArrayList(array);
    

    我之所以提出这一点,是因为GCL通常是件好事,值得使用

    如注释中所述,这需要数组的副本;该列表不受原始数组的支持,两个集合中的更改在另一个集合中都看不到

  3. # 3 楼答案

    因为你得到的是只读列表。 试试看

    List newList = new ArrayList(myList);
    
  4. # 4 楼答案

    使用

    ArrayList instead of List

    列表具有固定大小的元素,列表既不能添加项,也不能删除项

  5. # 5 楼答案

    请阅读Arrays.asList()的API文档:

    Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)

    请注意,收藏。移除(int)在Javadocs中被标记为“可选操作”,这意味着并非所有集合都支持它。“固定大小列表”意味着您不能更改列表的大小,而remove()可以做到这一点。所以它不受支持

    如果要更改数组生成的列表。asList(),只需复制它,例如new ArrayList(Arrays.asList(...))

  6. # 6 楼答案

    从asList收到的实现没有实现完整的列表接口。我会将列表转换为ArrayList,然后对其进行修改

    remove()