ZKX's LAB

list 过滤重复数据库 java 怎样把list中相同的数据找出来

2021-04-10知识5

list 已经取到数据,但是数据有重复的,怎样去掉重复的,求简单的代码,大神,前面答得我不太懂 前面不是已经说得很清楚了吗?这是扩展IEnumerable泛型接口。这个扩展类不能落掉static class ExternEnumerable {public static IEnumerable<;TSource>;DistinctBy,TKey>;(this IEnumerable<;TSource>;source,Func,TKey>;keySelector){HashSet<;TKey>;seenKeys=new HashSet();foreach(TSource element in source){if(seenKeys.Add(keySelector(element))){yield return element;}}}}筛选去重调用IEnumerable<;User>;ie=list;关键点1:先转换为IEnumerable接口类型关键点2:把你需要过滤为重复的条件(即属性)用\"|\"进行拼接成一个key.ie=ie.DistinctBy,string>;(u=>;u.DatasName+\"|\"+u.DatasType+\"|\"+u.DatasValue);完整示例:internal class User{public string DatasName { get;set;}public string DatasType { get;set;}public string DatasValue { get;set;}}扩展IEnumerableinternal static class ExternEnumerable{这里的TKey泛型参数化可以理解为你要去重的条件(作为哈希Key)形如:字段A+字段B+字段C+字段N 若是重复的拼接后的结果也必须相等因为哈希Key是不可以重复的从而就达到了去重目的这个是算法思想,需要楼主自己去体会。internal static 。

JAVA中,如何去掉LIST里的重复元素 最好2113的办法是用Set,因为Set里面存放的数据是不5261重复的。如果4102你不想用Set,那还可以1653向下面这样处理。List list_tmp=new ArrayList();建立一个用于临时存放不重复list元素的List集合。for(Object obj:list){可以根据需要,在这里加上强制转型。如list里面存放的是一个User对象,那么加上User u=(User)obj;if。list_tmp.contains(obj)){/注意contains方法是通过equals方法进行比较的所以你要根据你自己的需要看是否需要重写list对象里面的equals方法。list_tmp.add(obj);如果上面加了强制转型,这里需要写list_tmp.add(u);}}

java里有没有专门判断List里有重复的数据 List是有序的可重复集合,如果要判断list中是否有一个元素,可以用 list.contains(obj)如果只是为了判断list中是否有重复,方法有很多种,比如可以将list转换为setSet set=new HashSet(list);set是无需不可重复的集合,list转成set之后,如果set的size比 list的size小,说明有重复元素也可以遍历list,放入Map,用list的泛型作为 map 的 key 类型,而出现的次数作为 map的value,这样就能很容易看出来 list中的元素有没有重复,哪个有重复,重复了几次

随机阅读

qrcode
访问手机版