public static void main(String[] args) {
String[] str = new String[] { "a", "", "", "c", };
List<String> list = new ArrayList<String>(Arrays.asList(str));
for (int i = 0; i < list.size(); i++) {
if (list.get(i).equals("")) {
list.remove(i);
}
}
System.out.println(list);
}
这段代码原意是想删除数组中所有的空串,可是输出结果为[a, ,c],是因为在删除元素的过程中list长度随之改变,解决方法,倒序删除即可,或者用一个新的list去装删除空串后的list,或者用迭代器删除。
public static void main(String[] args) {
String[] str = new String[] { "a", "", "", "c", };
List<String> list = new ArrayList<String>(Arrays.asList(str));
for (int i = list.size()-1; i > 0; i--) {
if (list.get(i).equals("")) {
list.remove(i);
}
}
System.out.println(list);
}
1.对原来list顺序不要求
public static void removeDuplicate(ArrayList arlList) {HashSet h = new HashSet(arlList);
arlList.clear();
arlList.addAll(h);
}
2.对原来list顺序不变
public static void removeDuplicateWithOrder(ArrayList arlList) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = arlList.iterator(); iter.hasNext(); ) {
Object element = iter.next();
if (set.add(element)) newList.add(element);
}
arlList.clear();
arlList.addAll(newList);
}