2 zcx929666 zcx929666 于 2016.09.11 22:43 提问

session写得购物车批量删除的问题 1C

List批量删除 因为删除了一个 下标越界了 这个时候该怎么判断呢??

6个回答

zcx929666
zcx929666   2016.09.11 22:42
String[] indexs=index.split(",");//用逗号分割
        System.out.println("删除多个:"+index);
        int tempIndex=0;
        int preIndex=0;
        for (int i = 0; i < indexs.length; i++) {
            tempIndex=Integer.parseInt(indexs[i]);
            System.out.println("tempIndex1:"+tempIndex);
            System.out.println("preIndex:"+preIndex);
            tempIndex=tempIndex-preIndex;
            if(preIndex==1){//说明是最后一个了
                tempIndex=0;
            }
            System.out.println("tempIndex2:"+tempIndex);
            int pid=cartList.get(tempIndex).getPid();
            System.out.println("产品名称:"+cartList.get(tempIndex).getPname());
            cartList.remove(tempIndex);//先移除List中的数据
            cartMap.remove(pid);//根据id移除map中的数据
            preIndex=tempIndex;
        }
zcx929666
zcx929666   2016.09.11 22:42

我这个有点问题 求老司机过来改一改

qq_36115076
qq_36115076   2016.09.11 23:06

可以先将indexs倒序排序,然后遍历删除就行了,就不必考虑后面的索引下标变化的问题了。就相当于从后面开始删除,再到前面的。

kaka20099527
kaka20099527   2016.09.12 09:39

如果因为cartList删除元素导致越界,那本身逻辑有问题,因为和tempIndex已经就没有对应关系了。
1.先排序,先删除最大的tempIndex
2.对cartList迭代,在indexs中的进行删除

zhuzige521888
zhuzige521888   2016.09.12 14:23

1,首先,购物车删除这种尽量不要用索引来删除,因为所以不稳定也不唯一,最好用ID等唯一主键来删除。
2,如果一定要根据索引删除,参考如下代码:
图片说明

xubo_ob
xubo_ob   2016.09.14 08:48

list删除采用qq_36115076 说的倒序遍历删除就好
但是对于购物车,建议使用hashmap,如果想用list,也请用LinkedList。

Csdn user default icon
上传中...
上传图片
插入图片