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

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