删除List中的非数字元素

来源:互联网 发布:淘宝运营托管 编辑:程序博客网 时间:2024/06/10 09:56

由于List的非线程安全特性, 在遍历List的过程中, 随意删除某个元素是一件很危险的事情, 所以在写 hello world 的时候需要注意一下.

function 1.0:

// 使用Pattern类可以匹配正则表达式Pattern pattern = Pattern.compile("[0-9]*");        boolean ifNum;        Iterator<String> it = list.iterator();        while (it.hasNext()) {            String element = (String) it.next();            ifNum = pattern.matcher(element).matches();            if (!ifNum) {                it.remove();                // 这里使用list.remove(element)是错误的            }        }

function 2.0:

// 在这里是不能使用优化版for循环的,因为List的长度时不时地会变短for (int i = 0; i < list.size(); i++)        {            ifNum = pattern.matcher(list.get(i)).matches();            if (!ifNum)            {                list.remove(i);                i --;                // 在List删除某一个元素之后,后面的元素会向前推进,导致长度改变            }        }

在Eclipse中, 按 Shift + Alt + A 键可以矩形选区

0 0
原创粉丝点击