`

如何去除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);
		}
	}

}






分享到:
评论

相关推荐

    list去掉重复对象

    一个list里面有多个对象,对象有几个字段,要求在对象里面不要有重复的数据的实现。

    list集合去除重复对象的实现

    下面小编就为大家带来一篇list集合去除重复对象的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    两个List集合取相同重复数据的方法

    今天小编就为大家分享一篇关于两个List集合取相同重复数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    Android List删除重复数据

    主要介绍了Android List删除重复数据的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧

    Java数组去重 集合List去重的常用方法总结

    在日常的业务开发中,可能会遇到需要将 List 集合中的重复数据去除掉的场景。在实际的业务开发中遇到的情况会更复杂。比如,List 集合可能是历史遗留问题,也有可能是调用接口返回的类型限制,只能使用 List 接收;...

    java后台实现用list接收重复的对象属性

    java实现后台用list接收前台重复的name属性的值 接收重复属性 后台数组接收前台重复的name

    C#查找列表中所有重复出现元素的方法

    主要介绍了C#查找列表中所有重复出现元素的方法,涉及C#针对列表操作的技巧,非常具有实用价值,需要的朋友可以参考下

    Java中对List去重 Stream去重的解决方法

    主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下

    Python list列表中删除多个重复元素操作示例

    本文实例讲述了Python list列表中删除多个重复元素操作。分享给大家供大家参考,具体如下: 我们以下面这个list为例,删除其中所有值为6的元素: l=[9,6,5,6,6,7,8,9,6,0] 首先尝试remove方法: l.remove(6) ...

    java 查找list中重复数据实例详解

    主要介绍了java 查找list中重复数据实例详解的相关资料,需要的朋友可以参考下

    java计算同一个list中是否有相同的值

    java计算同一个list中是否有相同的值

    两个list比较 取不同的对象

    比较list得到不同的对象 慎重注意list的大小变化和索引 精简算法

    Java中List集合对象去重及按属性去重的8种方法

    主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下

    List集合多个复杂字段判断去重的案例

    今天小编就为大家分享一篇关于List集合多个复杂字段判断去重的案例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

    JAVA集合(List,Set,Map)

     · List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。 · Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。 · ...

    Flutter List数组避免插入重复数据的实现

    具有一定长度存在索引的对象集合(长度为0不存在索引,长度&gt;0存在索引) 常见列表 1、定长列表 默认值null 例如:List&lt;int&gt; fixedLengthList = new List(2)、List&lt;int&gt; fixedLengthList = new List(8) List&lt;int&gt; ...

    Java集合框架.pdf

    Java集合框架概述 Java集合框架是一个抽象数据类型的框架,它提供了一组接口和类,可用于处理各种...2、List接口 List接口是有序集合,可以存储重复元素。它定义了有序的列表,可以根据索引位置访问列表中的元素。List

    Java集合总结.txt

    ps:要想往集合中存放基本数据类型,必须转换为对应的包装类 Collection -- 集合接口 List -- List接口(添加了许多针对下标操作的方法) 特点:有序的,且可重复 ArrayList: 数据结构:一维数组 ...

    求2个集合的交集

    HashSet(IEnumerable&lt;T&gt; collection,IEqualityComparer&lt;T&gt; comparer) 使用指定的比较器实例化数据,且将指定集合中的元素复制到集合中。 因为HashSet是专门设计来做集合运算的,因此它提供的方法中有不少是和集合...

    List和Set集合基础详解

    集合的家族(1)List集合—(有序,可重复)(2)Set集合—(无序,唯一) 一. 为什么要有集合? 集合是为了弥补数组的不足而存在。 集合相对于数组优势在于:a.集合的长度可以动态改变;b.集合中能够存放多种类型的数据。 ...

Global site tag (gtag.js) - Google Analytics