- List<String> a = new ArrayList<String>();
- a.add("foo");
- a.add("john");
- a.add("adam");
- a.add("bar");
- for (int i = 0; i < a.size(); i++)
- {
- String str = a.get(i);
- if (!str.equals("foo") || !str.equals("bar")) a.remove(str);
- }
复制代码
以上代码,删除“john”后,“adam”会跳到List中索引为1的位置。所以,“adam”会被跳过不删除。
如果用以下代码,
- List<String> a = new ArrayList<String>();
- a.add("foo");
- a.add("john");
- a.add("adam");
- a.add("bar");
- for (int i = 0; i < a.size(); i++)
- {
- String str = a.get(i);
- boolean removed = false;
- if (!str.equals("foo") || !str.equals("bar"))
- {
- a.remove(str);
- removed = true;
- }
- if (removed) i--;
- }
复制代码
这样代码又不是很规范,请问有其他更有效率的方法从List中移除元素吗? |