`
yhz61010
  • 浏览: 562541 次
  • 来自: -
博客专栏
63c13ecc-ef01-31cf-984e-de461c7dfde8
libgdx 游戏开发
浏览量:12274
社区版块
存档分类
最新评论

原创: Java 删除List中的多余元素 (List 去重)

    博客分类:
  • Java
阅读更多
    如何去除List中重复的数据,可以使用如下的方法。
   
    注:引用的包包括:
    commons-beanutils(Bean反射工具)
    commons-lang(常用工具类,这里用到了String工具类)

package com.listutil;

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

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.lang.StringUtils;

import com.Sort.BeanSort.TestBean;

/**
 * List Utilities
 * 
 * @author Michael Leo
 * @since 2010/05/20
 */
public class ListUtils
{
	private static final char SEPARATOR = '|';

	/**
	 * Remove the duplicate element in List according to the specified keys in
	 * List bean and return a new list.</br>
	 * 
	 * If the parameters are empty or exception occurred, original list will be
	 * returned.
	 * 
	 * @param list
	 *            To be processed list
	 * @param keys
	 *            The fields in List bean as keys
	 * @return
	 */
	public static <T> List<T> removeDuplication(List<T> list, String... keys)
	{
		if (list == null || list.isEmpty())
		{
			System.err.println("List is empty.");
			return list;
		}

		if (keys == null || keys.length < 1)
		{
			System.err.println("Missing parameters.");
			return list;
		}

		for (String key : keys)
		{
			if (StringUtils.isBlank(key))
			{
				System.err.println("Key is empty.");
				return list;
			}
		}

		List<T> newList = new ArrayList<T>();
		Set<String> keySet = new HashSet<String>();

		for (T t : list)
		{
			StringBuffer logicKey = new StringBuffer();
			for (String keyField : keys)
			{
				try
				{
					logicKey.append(BeanUtils.getProperty(t, keyField));
					logicKey.append(SEPARATOR);
				}
				catch (Exception e)
				{
					e.printStackTrace();
					return list;
				}
			}
			if (!keySet.contains(logicKey.toString()))
			{
				keySet.add(logicKey.toString());
				newList.add(t);
			}
			else
			{
				System.err.println(logicKey + " has duplicated.");
			}
		}

		return newList;
	}

	public static void main(String[] args)
	{
		List<TestBean> list = new ArrayList<TestBean>();

		TestBean tb1 = new TestBean();
		tb1.setField1(34);
		tb1.setField3("aaa");

		TestBean tb2 = new TestBean();
		tb2.setField1(344);
		tb2.setField3("ab");

		TestBean tb3 = new TestBean();
		tb3.setField1(3344);
		tb3.setField3("ab");

		TestBean tb4 = new TestBean();
		tb4.setField1(3344);
		tb4.setField3("ab");

		list.add(tb1);
		list.add(tb2);
		list.add(tb3);
		list.add(tb4);

		List<TestBean> list2 = removeDuplication(list, "field1", "field3");

		for (TestBean b : list)
		{
			System.out.println(b);
		}
		System.out.println("---------------------");
		for (TestBean b : list2)
		{
			System.out.println(b);
		}
	}
}
2
0
分享到:
评论

相关推荐

    std::List类的遍历获得元素的操作二法

    但是,`std::list`提供了迭代器接口,我们可以利用迭代器来遍历并访问容器中的每个元素。以下是两种遍历`std::list`并获取其元素的方法。 ### 方法一:迭代器遍历 在C++中,迭代器是访问容器内元素的指针类似对象...

    java中List对象列表实现去重或取出及排序的方法

    Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...

    java获取list中两元素时间差

    Java 获取 List 中两元素时间差 Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现...

    java list根据对象的某个属性的值去重

    java list根据对象的某个属性的值去重,java list根据对象的某个属性的值去重java list根据对象的某个属性的值去重

    java jsonarray 踢重 去重操作

    在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...

    list去重.txt

    在java的list中由于经常存在重复的元素,需要去重,这个时候要用到list去重,将一些不必要展现出来的元素展现出来

    如何实现java8 list按照元素的某个字段去重

    在Java编程中,有时我们需要处理列表(List)数据结构,并且在处理过程中,可能需要根据元素的特定字段去重。Java 8引入了Stream API,它提供了强大的数据处理能力,包括去重操作。本篇文章将详细讲解如何使用Java 8...

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

    这种方法通过两层循环来遍历List中的所有元素,并删除重复项。 **示例代码**: ```java public static List&lt;Integer&gt; removeDuplicate1(List&lt;Integer&gt; list) { for (int i = 0; i &lt; list.size() - 1; i++) { for...

    java 去除重复元素

    在Java编程中,处理数据集合时,我们常常会遇到去除重复元素的需求。这可能是为了保持数据的唯一性,或者为了优化存储和计算效率。本文将详细介绍如何在Java中去除重复元素,主要关注数组和列表这两种常见数据结构。...

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

    【Java中List集合对象去重及按属性去重的8种方法】 在Java编程中,当我们处理包含重复元素的List时,有时需要去除其中的重复项。以下文章将详细介绍8种针对List集合对象去重的方法,包括基于对象整体以及按特定属性...

    C#list集合按元素出现次数排序取值(含去重功能)

    此文件搭配本人发表的文章:C#list集合按元素出现次数排序取值(含去重功能),资源完全免费下载,不收取任何费用,纯粹的技术交流。联系方式在文章中有,喜欢的朋友们可以互相交流一下。

    java学习笔记--第二天(list去重问题)

    列表去重的目标是保留列表中的唯一元素,删除所有重复项。在Java中,我们可以采用多种方法实现这一目标,如使用HashSet、利用Java 8的Stream API或者自定义比较逻辑。 1. 使用HashSet去重:HashSet是Java集合框架中...

    数组,List 重复元素统计数量,找出唯一的元素

    int[] arr = { 1, 2, 2, 3, 3, 4, 4, 4, 1, 5, 6, 6, 6 }; 两种不同方式(使用map和list两种方式)获得一下输出结果 数组和list 可以使用相同的方法,自己测试可以 控制台输出 ...数组中唯一的元素是:5

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

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

    简述Java List去重五种方法

    Java List去重是Java编程中的一种常见操作,用于从List中删除重复的元素。在本文中,我们将介绍五种不同的方法来实现Java List去重。这些方法包括使用Java 8的Stream API、双重for循环、Set集合判断、遍历后判断赋给...

    关于Java中List对象的分页思想-按10个或者n个数对list进行分组

    Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n个。这种技术可以用于解决大规模数据的处理问题,例如批量...

    java list去重操作实现方式

    如果List中包含自定义的对象,需要确保这些对象正确实现了equals()和hashCode()方法,以保证去重的准确性。 此外,对于大型列表,这种方法可能不是最高效的,因为它涉及到创建新的HashSet和ArrayList。如果性能是...

    java合并LIST

    3. 避免LIST中的元素重复:在合并LIST时,需要考虑到LIST中的元素可能存在重复的情况,可以使用嵌套循环来遍历LIST,并检查每个元素是否存在重复。 4. JavaBean的应用:在本示例中,我们使用了JavaBean来封装...

Global site tag (gtag.js) - Google Analytics