如何去除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);
}
}
}
分享到:
相关推荐
但是,`std::list`提供了迭代器接口,我们可以利用迭代器来遍历并访问容器中的每个元素。以下是两种遍历`std::list`并获取其元素的方法。 ### 方法一:迭代器遍历 在C++中,迭代器是访问容器内元素的指针类似对象...
Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...
Java 获取 List 中两元素时间差 Java 中获取 List 中两元素时间差是指在 List 集合中计算每个元素之间的时间差异。下面是相关知识点的详细解释: List 数据结构 List 是一种常见的数据结构,在 Java 中有多种实现...
java list根据对象的某个属性的值去重,java list根据对象的某个属性的值去重java list根据对象的某个属性的值去重
在Java中处理JSON数据时,经常需要对JSON数组进行各种操作,其中去重是一个常见的需求。本文将详细介绍如何使用Java对`JSONArray`进行去重操作,并深入探讨背后的原理和技术细节。 ### JSON与Java JSON...
在java的list中由于经常存在重复的元素,需要去重,这个时候要用到list去重,将一些不必要展现出来的元素展现出来
在Java编程中,有时我们需要处理列表(List)数据结构,并且在处理过程中,可能需要根据元素的特定字段去重。Java 8引入了Stream API,它提供了强大的数据处理能力,包括去重操作。本篇文章将详细讲解如何使用Java 8...
这种方法通过两层循环来遍历List中的所有元素,并删除重复项。 **示例代码**: ```java public static List<Integer> removeDuplicate1(List<Integer> list) { for (int i = 0; i < list.size() - 1; i++) { for...
在Java编程中,处理数据集合时,我们常常会遇到去除重复元素的需求。这可能是为了保持数据的唯一性,或者为了优化存储和计算效率。本文将详细介绍如何在Java中去除重复元素,主要关注数组和列表这两种常见数据结构。...
【Java中List集合对象去重及按属性去重的8种方法】 在Java编程中,当我们处理包含重复元素的List时,有时需要去除其中的重复项。以下文章将详细介绍8种针对List集合对象去重的方法,包括基于对象整体以及按特定属性...
此文件搭配本人发表的文章:C#list集合按元素出现次数排序取值(含去重功能),资源完全免费下载,不收取任何费用,纯粹的技术交流。联系方式在文章中有,喜欢的朋友们可以互相交流一下。
列表去重的目标是保留列表中的唯一元素,删除所有重复项。在Java中,我们可以采用多种方法实现这一目标,如使用HashSet、利用Java 8的Stream API或者自定义比较逻辑。 1. 使用HashSet去重:HashSet是Java集合框架中...
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 8的Stream API、双重for循环、Set集合判断、遍历后判断赋给...
Java中List对象的分页思想是一种常用的数据处理技术,通过将一个大的List对象分割成多个小的List对象,每个小的List对象包含一定数量的元素,例如10个或n个。这种技术可以用于解决大规模数据的处理问题,例如批量...
如果List中包含自定义的对象,需要确保这些对象正确实现了equals()和hashCode()方法,以保证去重的准确性。 此外,对于大型列表,这种方法可能不是最高效的,因为它涉及到创建新的HashSet和ArrayList。如果性能是...
3. 避免LIST中的元素重复:在合并LIST时,需要考虑到LIST中的元素可能存在重复的情况,可以使用嵌套循环来遍历LIST,并检查每个元素是否存在重复。 4. JavaBean的应用:在本示例中,我们使用了JavaBean来封装...