ArrayList和LinkedList中的java.util.List subList(int,int)行为

时间:2012-02-11 23:39:57

标签: java list

如果我错了,请纠正我。 在阅读java.util.List方法并测试sublist(int fromIndex, int toIndex)时,我发现了以下结果:

  • 当使用由数组支持的ArrayList时,从结构上修改调用sublist()的结果将抛出UnsupportedOperationException。
  • 当使用由具有链接的节点支持的LinkedList时,从结构上修改调用sublist()的结果将不会抛出UnsupportedOperationException

是否因为在ArrayList中添加元素会将所有元素从正在添加的位置的右​​侧移位,这是一个在添加sublist()边界时影响数组的操作将LinkedList中的元素表示只创建一个新节点,并通过修改其邻居节点链接将其链接到列表中?

2 个答案:

答案 0 :(得分:1)

修改subList()中的ArrayList不会抛出UnsupportedOperationException - 以下工作正常:

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

答案 1 :(得分:1)

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