如何去除List集合中的重复数据

问题:用户权限查看,显示权限树时缺少了一个分支

原因:二级权限带有一个三级权限,但具有了相同的二级权限,所以未能正常显示

解决:去除List中重复的权限数据

方式:

参考资料: http://bbs.csdn.net/topics/390247210

1.List<Long>

 public   static   void  removeDuplicate(List list)   { 
    HashSet h  =   new  HashSet(list); 
    list.clear(); 
    list.addAll(h); 
    System.out.println(list); 
} 


2.List<Po>
Po类中具有编号或名称属性
public   static   void  removeDuplicateWithOrder(List list)   { 
      Set<Long> set  =   new  HashSet<Long>(); 
      List<Po> newList  =   new  ArrayList<Po>(); 
      for  (Iterator iter  =  list.iterator(); iter.hasNext();)   { 
           Po element  =  iter.next(); 
           if  (set.add(element.getId())) 
             newList.add(element); 
     } 
     list.clear(); 
     list.addAll(newList); 
    
} 


总结:
  • 去除List中的重复数据,通过set集合的key为非重复值的原理

你可能感兴趣的:(list,set)