簡單說明
ArrayList中保存的是某種類型的對象,如User,現在需要將對象屬性userid重復的都去掉,使userid唯一,要如何處理?
實現步驟
代碼如下方所示,實現一個Comparator的比較器,然后比較兩個對象的屬性,如果對象屬性相同,則返回0,並且因為treeset中的記錄不會重復,所以就可以達到去重的目的。
public void removeDuplicates(List<Object> l) {
// ... the list is already populated
Set<Object> s = new TreeSet<Object>(new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
// ... compare the two object according to your requirements
return 0;
}
});
s.addAll(l);
List<Object> res = Arrays.asList(s.toArray());
}
實際運用的代碼
下面是實際運用過程中實現的代碼,作用是將UserInfo中userid字段重復的去掉,如下:
/**
* 將列表中重復的用戶移除,重復指的是userid相同
* @param userList
* @return
*/
public ArrayList<UserInfo> removeDuplicteUsers(ArrayList<UserInfo> userList){
Set<UserInfo> s= new TreeSet<UserInfo>(new Comparator<UserInfo>(){
@Override
public int compare(UserInfo o1, UserInfo o2) {
return o1.userId.compareTo(o2.userId);
}
});
s.addAll(userList);
return new ArrayList<UserInfo>(s);
}
參考資料
主要是參考stackoverflow上面的代碼,鏈接如下: http://stackoverflow.com/questions/5741038/remove-duplicates-from-arraylists