`

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

}






分享到:
评论

相关推荐

    C#高性能枚举去除泛型中的重复数据

    例如,我们可以创建一个泛型方法,接受一个包含待去重数据的集合作为输入,利用枚举遍历这个集合,并将每个元素添加到一个HashSet中,HashSet在插入时会自动检查并排除重复项。由于HashSet的查找和插入操作具有O(1)...

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

    在Java编程中,集合操作是非常常见的,而在实际开发中,我们经常遇到需要从两个List集合中提取相同的重复数据的情况。这篇文章将为大家分享一个关于两个List集合取相同重复数据的方法。 首先,我们需要了解什么是...

    list去掉重复对象

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

    Android List删除重复数据

    在本文中,我们将介绍四种不同的方法来删除 Android List 中的重复数据。 方法一:通过循环进行删除 该方法使用双重循环来删除重复数据。外层循环遍历列表,内层循环从后向前遍历列表,比较每个元素是否相等,如果...

    利用Set集合去除List集合中重复元素、字符串中的重复子串

    本文将深入探讨如何利用Set集合去除List集合中的重复元素以及字符串中的重复子串。 首先,让我们理解Set集合的基本特点: 1. **一次只存一个元素**:Set集合不支持重复元素,当尝试添加一个已存在的元素时,该操作...

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

    这里我们将详细讨论如何在`List`集合中去除重复对象的实现,特别是针对对象类型的集合。 首先,我们要明确一点:在Java中,当我们说两个对象是重复的,通常是指它们的属性值相等,而不是指它们在内存中的引用地址...

    去掉list中的重复对象

    在编程领域,尤其是在Java开发中,我们经常遇到需要处理数据集合,例如列表(List),去除其中的重复元素。"去掉list中的重复对象"这个话题是一个常见的需求,特别是在处理业务数据时,确保数据的唯一性至关重要。这...

    如何去掉list集合中重复的元素?.docx

    Set接口下的集合类如HashSet不存储重复元素,可以方便地去除列表中的重复项。将List转换为Set,然后再转换回List即可: ```java List&lt;PenBean&gt; uniquePenBeanList = new ArrayList(new HashSet(penBeanList)); ``` ...

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

    在C#编程中,处理列表数据结构是常见的任务之一,特别是在需要查找并处理重复元素的场景下。本篇文章将深入探讨如何在C#中查找列表中的所有重复元素,并提供一个具体的实现示例。 首先,我们需要了解C#中的列表类型...

    java去除集合中重复元素示例分享 java去除重复

    在实际开发中,我们经常需要从集合中去除重复元素,以保证数据的唯一性和正确性。今天,我们来分享一个Java集合去重示例,帮助大家更好地理解和应用这个概念。 Java集合去重示例的需求背景 -----------------------...

    易语言仿java集合 list map源码

    本主题聚焦于易语言中的面向对象编程,特别是模仿Java集合框架的List和Map接口的实现。这些数据结构在编程中扮演着核心角色,用于组织和管理数据。 首先,让我们深入了解易语言的面向对象编程概念。面向对象编程...

    C#List字典Dictionary泛型集合实例,源码

    在.NET框架中,C#语言提供了丰富的数据结构和容器,其中最常用且强大的就是List、Dictionary和HashSet等泛型集合。这些集合类是基于泛型的,能够提供类型安全的数据存储,大大增强了代码的可读性和效率。接下来,...

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

    在 Java 编程中,判断一个 `List` 中是否存在重复元素是一项常见的需求。特别是在数据处理、验证或分析等场景中,确保数据的唯一性对于维持数据完整性至关重要。 #### 核心概念解析 在给定的代码片段中,作者提供...

    List列表拒绝添加重复信息

    在编程领域,特别是使用Python语言时,我们经常需要处理数据集合,其中List是最常见的数据结构之一。List允许存储任意类型的对象,并且可以按照索引进行访问。然而,在某些情况下,我们可能希望创建一个不允许添加...

    完整版组合框、列表框去重复数据妙法.rar

    2. 使用LINQ去重:在.NET框架中,可以使用LINQ的Distinct()方法来轻松去除重复数据。例如,对于一个字符串列表`List&lt;string&gt;`,可以使用`list.Distinct().ToList()`来获取无重复的列表。 3. 自定义比较器:如果数据...

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

    List集合多个复杂字段判断去重的案例 在 Java 编程中,List 集合是我们常用的数据结构之一。当我们需要对 List 集合进行去重操作时,通常的做法是将其转换为 Set 集合,因为 Set 集合不允许重复元素。但是,事情并...

    使用集合组织相关数据

    2. **判断元素存在性**:检查某个元素是否存在于一组数据中,提高查询效率。 3. **集合分析**:在数据分析中,通过集合操作可以快速找到共同项、差异项等。 4. **算法优化**:在图论和搜索算法中,集合用于记录已...

    集合的概念及应用和HashSet保证数据不重复的原理

    在Java中,集合框架是由`java.util`包中的类和接口组成的,提供了多种类型的集合,包括列表(List)、队列(Queue)、集(Set)等。今天我们将深入探讨“集合”的概念及其应用,以及HashSet如何保证数据不重复的原理...

    两个集合比较(新增、编辑、删除)

    在IT领域,集合比较是一...通过理解并熟练运用这些方法,我们可以有效地比较和操作两个List集合,无论是查找新增、编辑还是删除的元素。在实际项目中,这种能力对于数据同步、日志分析、版本控制等多个场景都至关重要。

    Java List集合的应用.rar

    Java List集合是Java编程语言中一个非常重要的数据结构,它属于集合框架的一部分,主要用于存储一组有序的、可重复的对象。List接口提供了许多方法,使得在处理列表数据时具有很高的灵活性和效率。在这个“Java List...

Global site tag (gtag.js) - Google Analytics