日期:2014-05-20  浏览次数:20938 次

关于LIST中元素更换位置的问题~~~
各位大神,我现在对一个list中元素实现更换位子的功能,比如制定其中一个元素往前一位,或者往后一位,或者到最前、最后。
现在遇到点问题,详细描述如下:
这个LIST我通过转化为二维数组在Jframe中的Jtable显示,
然后我取得鼠标选中的值,通过
                              int index = 0;
for (int i = 0; i <sleList.size(); i++) {
if (sid ==sleList.get(i).getNum())//sid是list集合中一个对象元素的一个属性
;
{
index = i;// index 就是获得的下标
}
}
这样我就得到我在Jtable选中的那个对象在LIST中的下标。
我想LIST是有序的,所以我想按以下方法操作:
要实现把选中对象移至最前,就先sleList.remove(index);删除这个元素,sleList.add(0, select); 再把对象插到第一个位置;
然后再转化为二维数组在JTabel中显示。
把对象前移一位就先sleList.remove(index);删除这个元素,sleList.add(index-1, select); 再把对象插到前一个索引位置
然后再转化为二维数组在JTabel中显示。
往后移,移到最后也是这个思路,但实际操作中,最后显示的结果跟预期的不一样。
比如
1  aaa
2  bbb 
3  ccc
4  ddd
这样一个表,我选中CCC,得到的索引值就可能不会是2,然后把它移到最前操作的时候,会出现以下情况
1  ccc
2 aaa
3 bbb
4 ccc
没把它删掉,还挤掉了ddd的位置。
先把问题描述到这,其他的差不多的情况,请大神指教我的思路有什么问题。谢谢!


------解决方案--------------------
list是有序的,本身移除和指定位置添加元素的方法肯定不会有问题,问题肯定出在你自己的list实现里
------解决方案--------------------
你确定每次for循环中,只给index赋值一次么,有没有重复赋值这种情况,赋值后面加一个break。