JAVA有选择性删除一个集合里的所有数据

来源:互联网 发布:必应输入法mac 编辑:程序博客网 时间:2024/05/09 01:19

今天在做项目时遇到了一个问题,是购物车功能,要删除购物车里所有集合的元素。后来发现,只能删除掉其中一半的元素,经过调试发现,是因为在遍历数据的时候,i++在不断的增长,而调用data.remove(i)之后,数据的集合又在不断的减少,最终导致只能删除掉其中一半的元素。试了一下,如果提前如获取整个数据的大小,在进行选择性删除某些元素的时候,又会出现数组越界的异常。最后发现,要在循环每一个元素并且进行选择性判断之后,加一行代码i--,让i也随着数据的减少而减少,这个问题就解决了。以下为详细代码

//这是点击删除按钮,删除选中的项

builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {

                     //遍历整个数组

                    for(int i = 0;i<data_CVS.size();i++){
                       //这里判断一下这个项是否为选中项
                    if(data_CVS.get(i).getChecked().equals("Y")){
                          //删除符合这个条件的一项
                            data_CVS.remove(i);

                               //刷新整个数据

                              dataCVSChanged();

                        }

                        //关键是这行代码,让i能随着循环而减少

                    i--;
                    }
                 
                                  
                }
            });

至此整个问题就已经解决了

0 0