2012-02-11 31 views
1

如果我错了,请纠正我。使用当由数组支持一个ArrayList,修改在结构上调用子列表(的结果)将抛出UnsupportedOperationExceptionArrayList和LinkedList中的java.util.List子列表(int,int)行为

  • : 当读取关于java.util.List方法和测试sublist(int fromIndex, int toIndex)我发现了以下结果。
  • 当使用LinkedList这是由具有链接的节点支持时,在结构上修改调用的结果sublist()不会抛出UnsupportedOperationException

是因为添加元素为ArrayList将从其中被加入的位置的右​​侧的所有元素移位和这是影响sublist()边界之外的阵列,同时在添加元素为LinkedList的操作意味着只创建一个新节点,并且只通过修改其邻居节点链接将其链接到列表中?

+0

请向我们展示一段简短的自包含代码片段,以演示其差异。 – 2012-02-11 23:54:05

+1

你的意思是'Arrays.asList'? – 2012-02-11 23:55:37

回答

1

修改从ArrayListsubList()不会抛出UnsupportedOperationException - 以下工作正常:

ArrayList list = new ArrayList(); 
    list.add("a"); 
    list.add("b"); 
    list.add("c"); 
    List sub = list.subList(1, 2); 
    sub.add("d"); 
+0

我正在使用Arrays.asList,有混乱。干杯 – 2012-02-11 23:59:31

1

ArrayList支持添加在列表的中间元素与方法add(int index, E element),就像一个LinkedList一样。无论哪种情况,子列表的界限都会受到影响,这不是问题。