A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈永波 初级黑马   /  2012-7-1 22:06  /  1261 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈永波 于 2012-7-2 14:06 编辑

由于arraylist 的元素删除元素后长度变小了,元素的索引也会跟着改变,
但是迭代的下标没有跟着相应的改变。请问怎么处理在ArrayList中删除所有不等于指定值的元素?

2 个回复

倒序浏览
本帖最后由 Forever。 于 2012-7-1 22:47 编辑

楼主试试我的方法:
可以实现功能
public ArrayList<String> arrHandle(ArrayList<String> list,String deletStr)
        {
                //新建一个将来要返回的list
                ArrayList<String> blist = new ArrayList<String>();
                //遍历传进来的list
                for(int i = 0 ; i < list.size() ; i ++ )
                {
                        //得到的元素
                        String str = list.get(i);
                        StringBuilder sb = new StringBuilder(str);
                        //判断得到的元素是否含有deletStr,如果有就删除
                        if(str.contains(”abc“))
                        {
                                //将得到的每个元素拆分成char数组然后去挨个对比其中的元素
                                char[] c = str.toCharArray();
                                for(int j = 0 ; j < c.length-2 ; j ++)
                                {
                                        if(c[j]=='a'&&c[j+1]=='b'&&c[j+2]=='c')
                                        {
                                                sb.delete(j, j+2);在这里把你想删掉的东西删了我这里是字符串abc
                                        }
                                }
                        }
                        //最后将重新组合的元素添加到blist中
                        blist.add(sb.toString());
                }
                return blist;
        }


回复 使用道具 举报
iterator()可以remove()啊 。没看明白什么意思。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马