[原創]JAVA技巧:去除ArrayList里面的重復記錄

簡單說明

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM