A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
list.add(6);
list.set(2,list.set(5,list.get(2)));
System.out.println(list);       
打印结果是[1,2,6,4,5,3],不理解最后那个表达式!知道的麻烦帮我解决一下,谢谢...

7 个回复

倒序浏览
E set(int index, E element) :用指定元素替换列表中指定位置的元素,返回是指定位置的元素
先看里层list.set(5,list.get(2))   拿第3个元素替换第6个元素,返回第6个元素
list.set(2,list.set(5,list.get(2))) 就等于list.set(2,第6个元素), 拿第6个元素替换第3个元素
所以打印结果是[1,2,6,4,5,3]了
回复 使用道具 举报
关键在于list.set()返回的是被替换掉的元素
回复 使用道具 举报
List集合是数组数据结构,所以都是根据脚标来设置和获取值。

list.set(2,list.set(5,list.get(2))); 我们分解来分析:

Integer a=list.get(2);//获取索引为2的元素 ,获取的值为3

Integer b=list.set(5,a); //覆盖索引为5的元素,覆盖的后值为:3,返回该索引覆盖前的元素

Integer c=list.set(2,b); //再次覆盖索引为2的元素,覆盖后的值:6

打印结果:[1,2,6,4,5,3]  
由结果观察也就是6和3的位置互换了。
回复 使用道具 举报
list.get(index)返回指定位置的元素,list.set(index,element)替换指定位置的元素,并返回原来的元素
回复 使用道具 举报
list.get(index)返回指定位置的元素,list.set(index,element)替换指定位置的元素,并返回原来的元素
回复 使用道具 举报
马云 中级黑马 2012-3-22 16:35:43
7#
学习了,没准那天面试还能考到这样的题呢
回复 使用道具 举报
list.set(2,list.set(5,list.get(2)));
从最里面开始看:
list.get(2) :得到第3个元素
set(5,list.get(2)) :将第3个元素,值为3,设置为第6个元素,并返回第6个元素原来的元素,值为6,
list.set(2,list.set(5,list.get(2)));又将原来值为6的第6个元素赋给第3个元素,相当于把两个元素交换了位置。
有点绕

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马