public static void swap(List<?> list, int i, int j) {
final List l = list;
l.set(i, l.set(j, l.get(i)));
}为什么执行上面代码会把list数组的两个元素的位置会交换,我看了很久没看懂,这是Java。util.Colections类的方法,帮忙解释下
final List l = list;
l.set(i, l.set(j, l.get(i)));
}为什么执行上面代码会把list数组的两个元素的位置会交换,我看了很久没看懂,这是Java。util.Colections类的方法,帮忙解释下
解决方案 »
- 获取当前时间
- Java Swing的一个画图问题
- Iteration abstraction, Data abstraction, Procedural abstraction, Type abstraction definitions
- 如何显式地释放对象?
- java程序如何与c++程序进行通信
- 这句是对的吗?
- 各位大侠,帮帮忙,除了thread.sleep()之外还有什么方法能起到延迟得作用啊?
- help
- 大虾,请问如何在IE6.0中显示java applet??我装了jdk1.4.0啦,为什么浏览器还是无法显示applet??
- 怎样用javamail收取含附件的邮件,熟悉javamail的请近
- jxl导出Excel的实现遇到的问题
- 用jfreechart做的饼图背景色问题。
(1)l.set(j, l.get(i)) //将j位置的值设为i位置的值,并返回j位置原来的值
(2)将i位置的值设为(1)里返回的值,也就是j位置原来的值
E set(int index,
E element)用指定元素替换列表中指定位置的元素(可选操作)。 参数:
index - 要替换的元素的索引。
element - 要在指定位置存储的元素。
返回:
以前在指定位置的元素。
抛出:
分两个操作:
Object obj = l.set(j, l.get(i);//通过API知道,这是返回原来在j位置上的对象.
然后就是
list.set(i,obj);//原来j位置的对象放到i位置上
用指定元素替换列表中指定位置的元素(可选操作)。 参数:
index - 要替换的元素的索引
element - 要在指定位置存储的元素
返回:
以前在指定位置的元素
这是set方法的API 中文的 楼主看看就明白了吧
我就是这点没搞懂,为什么会把j原来的值也会返回去呢,set方法不就是为特定位置赋值吗,里面j都赋值了,不就改变了吗