public void sublist()
{
List<String> list = new ArrayList<String>();
for(int i = 0;i<10;i++)
{
list.add("ddd"+i);
}
list.add(3,"yuxiakun");
List<String> list2 = new ArrayList();

list2.addAll(list.subList(1, 3));

//              这个输出的结果怎么不是 asd???
System.out.println(list2.set(0, "asd"));
} public void sublist1()
{
List<String> list = new ArrayList<String>();
for(int i = 0;i<10;i++)
{
list.add("ddd"+i);
}
list.add(3,"yuxiakun");


list.subList(1, 3).set(0, "ssssssssssssssssssss");
System.out.println(list.subList(1, 3).set(0, "ssssssssssssssssssss"));
}

解决方案 »

  1.   

    请看ArrayList的API,注意红色部分:public E set(int index,
                 E element)用指定的元素替代此列表中指定位置上的元素。 指定者:
    接口 List<E> 中的 set
    覆盖:
    类 AbstractList<E> 中的 set
    参数:
    index - 要替代的元素的索引
    element - 存储在指定位置上的元素 
    返回:
    以前位于该指定位置上的元素 

    抛出: 
    IndexOutOfBoundsException - 如果索引超出范围 (index < 0 || index >= size())