<求助>为什么不能删除重复元素?
而且equals重写不了?
import java.util.ArrayList;
import java.util.List;
public class Work1 {
public static void main(String[] args) {
List<String> str=new ArrayList<>();
str.add("张三");
str.add("李四");
str.add("王五");
str.add("张三");
str.add("aaa");
str.add("aaa");
str.add("bbb");
for(int i=0;i<str.size()-1;i++) {
for(int j=str.size()-1;j<i;j--) {
if (str.get(j).equals(str.get(i))) {
str.remove(j);
}
}
}
for (String string : str) {
System.out.println(string);
}
}
}
无法删除重复元素是因为代码写的不对:内部的for循环的判断条件错了,应该是j>i
你直接把数据往
Set<String>
里面新增,新增完之后就是去重的了
给你一个忠告,在for循环遍历方法里边,不要牵扯到增删对象,因为这样的话,集合的大小是随之变化的,这就导致遍历的时候会略过一些数据,你可以自己写个小程序验证一下。
楼上正解 list遍历的时候 就不要再对LIST进行修改操作了 不然会GG
重新定义一个List用来装去重后的,循环原List,判断如果新List中包含,就不加入此元素,否则往新List中添加此元素:
for(int i=0;i<str.size();i++){
if(!newList.contains(str.get(i))){
newList.add(str.get(i));
}
}