黑马程序员技术交流社区
标题:
集合问题
[打印本页]
作者:
黑马伍仪华
时间:
2012-3-6 20:20
标题:
集合问题
List<Object> lists = new ArrayList<Object>();
lists.add("1");
lists.add("2");
lists.add("3");
lists.add("4");
List<Object> tempList = lists.subList(2, lists.size());
tempList.add("6");
System.out.println(tempList); // 1
System.out.println(lists); // 2
代码初步写好后,可能我们想达到的效果是:往集合lists的子集合tempList中添加一个元素6,而原有的集合保持不变。
即到达这样的效果:lists = [1, 2, 3, 4],tempList = [3, 4, 6]。但是我们看到实际的结果确是lists里边也添加了元素6。
这是怎么一会事呢
作者:
马胜平
时间:
2012-3-6 20:36
本帖最后由 马胜平 于 2012-3-6 20:40 编辑
subLiist并没有改变原来的列表,看文档说明:返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图
返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
必须再加条语句 tempList=new ArrayList(temptList)
当我们使用子集合tempList进行元素的修改操作时,会影响原有的list集合。所以在使用subList方法时,一定要想清楚,是否需要对子集合进行修改元素而不影响原有的list集合。
作者:
泮和顺
时间:
2012-3-6 20:40
API中明确有subList()返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中; 如果想要那个效果不要用这个序列化的LIST<E>这个接口类 直接用List就好了
作者:
小白
时间:
2012-3-6 21:08
List<E> subList(int fromIndex,
int toIndex)返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。(如果 fromIndex 和 toIndex 相等,则返回的列表为空)。返回的列表由此列表支持,因此返回列表中的非结构性更改将反映在此列表中,反之亦然。返回的列表支持此列表支持的所有可选列表操作。
此方法省去了显式范围操作(此操作通常针对数组存在)。通过传递 subList 视图而非整个列表,期望列表的任何操作可用作范围操作。例如,下面的语句从列表中移除了元素的范围:
list.subList(from, to).clear();
看不懂给我留言!
作者:
黄秋
时间:
2012-3-7 02:05
马胜平 发表于 2012-3-6 20:36
subLiist并没有改变原来的列表,看文档说明:返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之 ...
加条语句 tempList=new ArrayList(temptList) 不行呀,而tempList = new ArrayList() 只是清空 list.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2