list特点:有序,可重复
set特点:无序,不可重复
所以利用这个特性,可将list的重复元素去除掉,请往下执行!
1.调用如下方法
/** * 得到去除重复后的集合 * @param list * @return */ private static List<User> getRemoveList(List<User> list){ Set set = new HashSet(); List<User> newList = new ArrayList<>(); for (Iterator iter = list.iterator(); iter.hasNext();){ User object = (User) iter.next(); if(set.add(object)) newList.add(object); } return newList; }
2.实体类重写equals()和hashCode()
public class User { private String name; @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; return name != null ? name.equals(user.name) : user.name == null; } @Override public int hashCode() { return name != null ? name.hashCode() : 0; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
注:如果使用android stuido,可以用Alt+Insert快捷键生成equals()和hashCode().