关于去除List数组中某个元素的方法有很多,其中以下这种方法对于新手来说很容易犯错:
public void remove() {
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("three");
int len = list.size();
System.out.println("移除元素前:" + list);
for(int i=0; i<list.size(); i++){
if(list.get(i).equals("two")){
list.remove(i);
}
}
System.out.println("移除元素后:" + list);
}
下面介绍两种简单的实现方法:
1、通过迭代器iterator:
public void remove() {
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("three");
int len = list.size();
System.out.println("移除元素前:" + list);
Iterator<String> iter = list.iterator();
while(iter.hasNext()){
String s = iter.next();
if(s.equals("two")){
iter.remove();
}
}
System.out.println("移除元素后:" + list);
}
2、通过设置标志位,借助一个用来保存标志位的数组:
public void remove() {
ArrayList<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("two");
list.add("two");
list.add("three");
int len = list.size();
int [] flag = new int[len];
ArrayList<String> reserveList = new ArrayList<String>();
System.out.println("移除元素前:" + list);
for(int i=0; i<list.size(); i++){
flag[i] = 1; //默认是1,用于保留的索引位
if(list.get(i).equals("two")){
flag[i] = 0; //设置标志,将要删除的索引位
}
}
for(int i=0; i<len; i++){
if(flag[i] == 1){
reserveList.add(list.get(i));
}
}
System.out.println("移除元素后:" + reserveList);
}