如何去除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);
}
}
}
分享到:
相关推荐
java list根据对象的某个属性的值去重,java list根据对象的某个属性的值去重java list根据对象的某个属性的值去重
java获取list中两元素时间差
在java的list中由于经常存在重复的元素,需要去重,这个时候要用到list去重,将一些不必要展现出来的元素展现出来
主要介绍了关于java中List对象列表实现去重或取出以及排序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
std::list没有[]函数或Get()函数,又不能总是front()的方式排出,如何遍历获得其中的元素呢?比如 遍历显示元素内容为例 ,用两种方式实现。
此文件搭配本人发表的文章:C#list集合按元素出现次数排序取值(含去重功能),资源完全免费下载,不收取任何费用,纯粹的技术交流。联系方式在文章中有,喜欢的朋友们可以互相交流一下。
int[] arr = { 1, 2, 2, 3, 3, 4, 4, 4, 1, 5, 6, 6, 6 }; 两种不同方式(使用map和list两种方式)获得一下输出结果 数组和list 可以使用相同的方法,自己测试可以 控制台输出 ...数组中唯一的元素是:5
主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
主要介绍了Java中对List去重, Stream去重的问题解答,文中给大家介绍了Java中List集合去除重复数据的方法,需要的朋友可以参考下
今天小编就为大家分享一篇关于Java List中数据的去重,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
实用方法,使用java8 stream对List 分组,去重,自定义排序
主要介绍了Java中List集合对象去重及按属性去重的8种方法,本文给大家介绍的非常详细,对大家的学习或工作具有一地的参考借鉴价值,需要的朋友可以参考下
在日常的业务开发中,可能会遇到需要将 List 集合中的重复数据去除掉的场景。在实际的业务开发中遇到的情况会更复杂。比如,List 集合可能是历史遗留问题,也有可能是调用接口返回的类型限制,只能使用 List 接收;...
java list集合和数组去除重复项,并记录重复次数个数。
关于讲解在java 中List使用方法
List ls = dao.getHibernateTemplate().find(hql); Iterator it = ls.iterator(); if(it.hasNext()){ // while 用这个的时候和下面的一样 Object[] obj = (Object[]) it.next(); ...
也可以使⽤should be equal来做相等判断 8 Remove (Values) From List-删除list中某个值 Remove From List:按照index删除,⼀次删除1个 Remove Values From List:按照value值删除,⼀次可删除多个 ⽰例如2.6 9 ...
1、List集合:ArrayList、LinkedList、Vector等 2、Vector是List接口下线程安全的集合 3、List是有序的 4、Array
该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等
关于Java中List对象的分页思想-按10个或者n个数对list进行分组