Java 去除ArrayList《Object》裏面的重複記錄。

 

簡單說明

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章