如何去除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为非重复值的原理


示例:


import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * List 集合去重
 */
public class RemoveRepeatTestMain {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		List<String> list = new ArrayList<String>(8);
		list.add("a");
		list.add("b");
		list.add("a");
		list.add("c");
		list.add("a");
		list.add("d");
		list.add("d");
		list.add("a");
		method1(list);
		method2(list);
		method3(list);
		method4(list);
	}
	
	/**
	 * 方式1
	 * 两个集合,将原有元素放入新的集合中,并判断新的集合是否已包含加入的元素
	 * @param list
	 */
	public static void method1(List<String> list){
		List<String> newList = new ArrayList<String>(list.size());
		for(String str : list){
			if(null != newList && newList.size() > 0 && !newList.contains(str)){
				newList.add(str);
			}else if ( null == newList || newList.size() == 0 ){
				newList.add(str);
			}
		}
		printList(newList);
	}
	
	/**
	 * 利用 set.add 方法,若set中不含此元素,添加成功,返回TRUE,否则FALSE
	 * @param list
	 */
	public static void method2(List<String> list){
		List<String> newList = new ArrayList<String>(list.size());
		Set<String> setTemp = new HashSet<String>(list.size());
		for(String str : list){
			if(setTemp.add(str)){
				newList.add(str);
			}
		}
		printList(newList);
	}
	
	public static void method3(List<String> list){
		List<String> newList = new ArrayList<String>(new HashSet<String>(list));
		printList(newList);
	}
	
	public static void method4(List<String> list){
		
		List<String> newList = new ArrayList<String>(list.size());
		Set<String> set = new HashSet<String>(list.size());
		set.addAll(list);
		newList.addAll(set);
		printList(newList);
	}
	
	public static void printList(List<String> list){
		for(String str : list){
			System.out.print(str);
		}
	}

}






猜你喜欢

转载自mingyundezuoan.iteye.com/blog/2211492