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

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

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;
        }

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

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

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

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

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