两个List集合做数据对比

67 篇文章 7 订阅
订阅专栏

List集合做数据对比

在开发中我们经常会遇到集合,以及求集合的交集、差集、全集 等问题。在菜鸟时期我们可能会使用for循环来处理,但是这不是长久之计,不仅性能会受到损耗,还会影响同事的身体健康,因为你提交代码后,在同事看到会笑掉大牙。


文章目录

  • List集合做数据对比
  • 前言
  • 差集[Except]
    • 差集的介绍
    • C#中List中自带的差集计算方法
    • 简单数值对比
    • List对象数组对比
      • 方式一
      • 方式二
  • 交集[Intersect]
    • 交集的介绍
    • C#中List中自带的交集计算方法
    • 简单数值对比
    • List对象数组对比
      • 方式一
      • 方式二
  • 并集[Union]
    • 并集介绍
    • C#中List中自带的并集计算方法
    • 简单数值对比
    • List对象数组对比
      • 方式一
      • 方式二
  • 全集[Concat]
    • C#中List中自带的交集计算方法
    • 简单数值对比
    • List对象数组对比


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


差集[Except]

差集的介绍

在这里插入图片描述

比如集合A和集合B,
A和B的差集就是A集合中有的而B集合没有的,也就是灰色的部分。


C#中List中自带的差集计算方法

List 继承了Enumerable ,Enumerable 中有一个Except方法
在这里插入图片描述
它有两个实现:

  • 第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的差集。
  • 第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的差集。

简单数值对比

这是用默认的相等对比器
这种方式一般都是用来比较简单数组或者字符串内容

double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

这里的输出结果:
2
2.1
2.3
2.4
2.5


List对象数组对比

方式一

使用指定的 IEqualityComparer 对值进行比较
这种可以用来对比对象集合

模型

namespace 测试项目.Test
{
	public class test{
		public int id{get;set;}
		public string name{get;set;}
		public string tel{get;set;}
		public int age{get;set;}
		public string clas{get;set;}
	}
  public class testComparer : IEqualityComparer<test>
    {
        public bool Equals(test x, test y)
        {
            return x.name== y.name && x.tel== y.tel;
        }

        public int GetHashCode(test obj)
        {
            return obj.name.GetHashCode() ^ obj.tel.GetHashCode();
        }
    }
}

使用方法:

List<test> list=...这是第一个对象集合
List<test> list2=...这是第二个集合


 var different = list.Except(list2,new testComparer()).ToList();
 这是查询第一个集合里有但是第二个集合里面没有的数据

方式二

注意这种方式必须要两个集合的同一个对象才可以用

var result = 集合A.Where(x =>! 集合B.Any(e => e.id== x.id)).ToList();

交集[Intersect]

交集的介绍

在这里插入图片描述
集合A和B共有的数据,也就是图中灰色部分


C#中List中自带的交集计算方法

在这里插入图片描述
它和”Except“类似同样有两个实现:

  • 第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的交集。
  • 第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的交集。

简单数值对比

这是用默认的相等对比器
这种方式一般都是用来比较简单数组或者字符串内容

double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Intersect(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

这里的输出结果:
2.2


List对象数组对比

方式一

使用指定的 IEqualityComparer 对值进行比较
这种可以用来对比对象集合

模型

namespace 测试项目.Test
{
	public class test{
		public int id{get;set;}
		public string name{get;set;}
		public string tel{get;set;}
		public int age{get;set;}
		public string clas{get;set;}
	}
  public class testComparer : IEqualityComparer<test>
    {
        public bool Equals(test x, test y)
        {
        //这里是用于判断相同的依据字段
            return x.name== y.name && x.tel== y.tel;
        }

        public int GetHashCode(test obj)
        {
            return obj.name.GetHashCode() ^ obj.tel.GetHashCode();
        }
    }
}

使用方法:

List<test> list=...这是第一个对象集合
List<test> list2=...这是第二个集合


 var different = list.Intersect(list2,new testComparer()).ToList();
 这是查询第一个对象集合和第二个对象集合共有的对象。

方式二

注意这种方式必须要两个集合的同一个对象才可以用

var result = 集合A.Where(x =>集合B.Any(e => e.id== x.id)).ToList();

并集[Union]

并集介绍

在这里插入图片描述
A和B的数据合并在一起的值,也就是灰色范围的值

C#中List中自带的并集计算方法

在这里插入图片描述

它也和”Except“类似同样有两个实现:

  • 第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的交集。
  • 第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的交集。

简单数值对比

这是用默认的相等对比器
这种方式一般都是用来比较简单数组或者字符串内容

double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Union(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

这里的输出结果:
2
2.1
2.2
2.3
2.4
2.5


List对象数组对比

方式一

使用指定的 IEqualityComparer 对值进行比较
这种可以用来对比对象集合

模型

namespace 测试项目.Test
{
	public class test{
		public int id{get;set;}
		public string name{get;set;}
		public string tel{get;set;}
		public int age{get;set;}
		public string clas{get;set;}
	}
  public class testComparer : IEqualityComparer<test>
    {
        public bool Equals(test x, test y)
        {
        //这里是用于判断相同的依据字段
            return x.name== y.name && x.tel== y.tel;
        }

        public int GetHashCode(test obj)
        {
            return obj.name.GetHashCode() ^ obj.tel.GetHashCode();
        }
    }
}

使用方法:

List<test> list=...这是第一个对象集合
List<test> list2=...这是第二个集合


 var different = list.Union(list2,new testComparer()).ToList();
 这是将第一个集合和第二个集合合并在一起,会根据testComparer里的字段去除重复的对象。

方式二

注意这种方式必须要两个集合的同一个对象才可以用

var result = 集合A.Union(集合B).ToList();

全集[Concat]

注意:全集会去除重复的值而并集不会去除

C#中List中自带的交集计算方法

在这里插入图片描述
它也和”Except“类似同样有两个实现:

  • 第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的交集。
  • 第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的交集。

简单数值对比

这是用默认的相等对比器
这种方式一般都是用来比较简单数组或者字符串内容

double[] numbers1 = { 2.0, 2.0, 2.1, 2.2, 2.3, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

IEnumerable<double> onlyInFirstSet = numbers1.Concat(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

这里的输出结果:
2
2.1
2.2
2.2
2.3
2.4
2.5


List对象数组对比

使用指定的 IEqualityComparer 对值进行比较
这种可以用来对比对象集合

模型

namespace 测试项目.Test
{
	public class test{
		public int id{get;set;}
		public string name{get;set;}
		public string tel{get;set;}
		public int age{get;set;}
		public string clas{get;set;}
	}
  public class testComparer : IEqualityComparer<test>
    {
        public bool Equals(test x, test y)
        {
        //这里是用于判断相同的依据字段
            return x.name== y.name && x.tel== y.tel;
        }

        public int GetHashCode(test obj)
        {
            return obj.name.GetHashCode() ^ obj.tel.GetHashCode();
        }
    }
}

使用方法:

List<test> list=...这是第一个对象集合
List<test> list2=...这是第二个集合


 var different = list.Concat(list2,new testComparer()).ToList();
 这是将第一个集合和第二个集合合并在一起,会保留重复的对象。
两个集合比较(新增、编辑、删除)
07-14
在IT领域,集合比较是一...通过理解并熟练运用这些方法,我们可以有效地比较和操作两个List集合,无论是查找新增、编辑还是删除的元素。在实际项目中,这种能力对于数据同步、日志分析、版本控制等多个场景都至关重要。
比较两个List是否相等
weixin_41979002的博客
02-12 3万+
1、直接使用equals()比较 众所周知,两个列表具有完全相同的元素并且具有完全相同的顺序时,它们是相等的。因此, 如果我们业务要求两个list顺序一致,可以使用equals()方法进行相等性检查: @Test public void equalityCheckOfTwoLists() { List<Integer> list1 = Arrays.asList(1, 2, 3); List<Integer> list2 = Arrays.asList(1, 2
高效比较两个list中不同的元素
小秋蜀黍的博客
02-27 2万+
为知具体出处,望作者见谅!! package com.syl.test; import java.util.*; /** * 获取两个List的不同元素(假设List自身不存在重复元素) * Created by syl on 2017/12/26 0026. */ public class TestCompareList { public static void main(S
javalist如何快速找出两个list的不同
最新发布
weixin_42452301的博客
08-16 178
我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnN如何快速找出两个List之间的不同 在Java开发中,处理集合数据(如List)是极为常见的需求。尤其是在数据比较方面,当我们需要快速找出两个List之间的不同之处时,如何高效地实现这一目...
C#比较两个list集合类的差异
weixin_46879188的博客
12-14 1270
如果list集合类的差异的话,直接使用List中的Except方法,会发现全部都不一样。第二个实现是通过使用指定的 IEqualityComparer 对值进行比较,生成两个序列的差集。解决方案:可以把集合类事先转换为ToJson的字符串,就可以使用List中的Except方法。List 继承了Enumerable ,Enumerable 中有一个Except方法。第一个实现是通过使用默认的相等比较器对值进行比较,生成两个序列的差集。这是用默认的相等对比器。
Java8 Stream对两个 List 遍历匹配数据的优化处理操作
08-18
Java8 Stream对两个List遍历匹配数据的优化处理操作 Java8 Stream是一个功能强大的数据处理工具,它可以对数据进行处理、过滤、聚合和转换等操作。在本文中,我们将探讨如何使用Java8 Stream来对两个List进行遍历和...
比较两个集合是否相同(比较两个List内容是否相同)
04-04
比较两个集合是否相同(比较两个List内容是否相同) 利用Java反射机制,获取到字段名、方法名、字段值,进行逐个比较,此处本人封装好了工具类,接收的是泛型,调用者只需要传入两个实体List即可进行比较,返回true...
Java比较两个List的值是否相等的方法
09-03
Java编程中,比较两个List的值是否相等是一个常见的需求,特别是在处理数据集合时。这里我们探讨一种方法,用于判断两个List是否包含相同的元素,不论它们的顺序如何。这个方法的关键在于比较List的大小以及排序后...
两个list比较 取不同的对象
05-20
### 两个List比较取不同的对象 在Java编程中,经常需要对两个`List`进行比较,找出它们之间的差异。这通常涉及到数据结构的理解、算法设计以及编程实现等多个方面。本文将详细探讨如何通过一个示例代码来理解如何...
list之间数据对比出相同和不同数据,高效方法
Just a Coder
01-03 1万+
list匹配数据 第一种,最简单的方式遍历两个集合匹配,效率非常低 第二种,使用list的contains方法,内部封装的也是foreach方法,和第一种效率差不多 第三种,使用list的retainAll方法,效率也不算高 第四种,使用map匹配,效率极高,数据量越大越明显 贴上demo public class ListCompareUtil { public static voi...
比较两个List的内容是否相等
weixin_34008805的博客
06-13 2985
2019独角兽企业重金招聘Python工程师标准>>> ...
两个List比较内容是否一样
热门推荐
年岁不吾与的博客
09-12 5万+
两个list比较包含元素是否全部相同
对比俩个List之间的差异
chenyw1999的博客
07-25 2434
对比两个list的差异
对比两个List,区分重复数据(优化)。
CabbageDevil成狂成魔之路
02-24 2870
1. 背景 现在日常工作中经常会遇到两组数据对比碰撞的需求,菜菜不才,之前写了一个不怎么优雅的代码才解决了问题,而且还是只能对比String的,菜菜有空后赶紧写了一个比较优雅的方式解决了list比对的问题。 2. 代码 2.1 原始版本 /** * 两个List对比 * @param listA * @param listB * @return repeatList A与B的重复数据 * @r......
Java比较两个List之间差异(基于业务场景)
孑木文学的博客
10-31 1万+
本文实现了比较两个List之间的差异,包括获取两List的差集,交集,并集(不去重)和 并集(去重)的API解法和优化解法的解决方案,并根据实际业务场景实现业务需求。
Java编程经验---比较两个List对象差异
qq_27971677的博客
06-30 1万+
Java编程经验---比较两个List对象差异问题引入解决问题简化模型 问题引入 如何比较两个List对象的差异,这个问题来源于我最近正在开发的新系统中的一个细节。大致情况就是,从数据库中的一个视图A向另一个数据库的一张B表进行数据迁移。A的数据会随时更新,为了保证表B也可以及时获取数据,需要采用定时任务,不断同步数据。 每N分钟视图A表B 视图A中的数据在导入表B时,可能有数据已经在表B中,重复的导入浪费性能且可能发生潜在错误。那么就需要分析数据的差异后进行导入。先设一个前提,视图A与表B的结构相似,Pr
【Python】比较python两个list
MYLK的博客
03-29 2765
选择哪种方法主要取决于您需要比较什么以及您想用什么方式来表示。
Java两个List之间的比较(差集,交集,并集)
m0_66782750的博客
04-06 4万+
List之间的对比;两个List找出相同的结果;两个List找出不同的结果;Java两个List之间的比较(差集,交集,并集)
比较两个list集合是否相同
chen的博客
07-08 2万+
比较两个list集合是否相同 1.主要比较两个list中的元素,以及list的长度 2. list集合是有序的,并且list集合里的元素可以重复,因为该集合体系有索引 3.所以,list集合里元素可能有相同的,并且顺序可能不一样 第一种比较方法 下面展示一些 内联代码片。 package com.lrc.list; import java.util.ArrayList; import java...
两个list进行数据对比
05-19
可以使用Python中的set()函数来对两个列表进行数据对比。 例如,假设我们有两个列表a和b: ``` a = [1, 2, 3, 4, 5] b = [4, 5, 6, 7, 8] ``` 我们可以使用set()函数将这两个列表转换为集合(set),然后使用集合的交集、差集或并集等操作来进行数据对比。 1. 求并集: ``` union = set(a) | set(b) print(list(union)) # [1, 2, 3, 4, 5, 6, 7, 8] ``` 2. 求交集: ``` intersection = set(a) & set(b) print(list(intersection)) # [4, 5] ``` 3. 求差集: ``` difference = set(a) - set(b) print(list(difference)) # [1, 2, 3] ``` 以上三种方法可以帮助你对两个列表进行数据对比。
写文章

热门文章

  • centos7怎么查看ip地址 34251
  • js模板引擎template.js的使用 16858
  • 搭建国外服务器 15407
  • C# 生成校验解析token 9255
  • SqlServer Update的各种使用方式 8385

分类专栏

  • C# 67篇
  • Hangfire 1篇
  • redis 8篇
  • 笔记 11篇
  • ASP.NETCore 14篇
  • jQuery 2篇
  • sqlserver 13篇
  • layui 11篇
  • 领域驱动设计 2篇
  • nginx 1篇
  • memcached 1篇
  • Centos7 1篇
  • Python 4篇
  • RabbitMQ 1篇
  • KafKa 1篇
  • 设计模式 23篇
  • github 2篇
  • mitmproxy 1篇
  • 架构设计 1篇

最新评论

  • layui Table复杂表头导出

    抽疯的小盒子: 给大佬跪了,搞了一天半,sheetjs和table2excel都试了,导出的文件都是空白的,只有这个代码成功导出了复杂表头,谢了谢了

  • mitmproxy监听不到微信小程序

    kenny_668: 问下,你这个是微信那个版本?

  • 搭建国外服务器

    classhuanggua: 给大佬点赞,教程很棒!!!!!很nice

  • 搭建国外服务器

    不谷尉: 刚刚直接提了个服务单,客服反馈是操作系统内存占用超了,换了个旧版本好使了哈哈哈哈

  • 搭建国外服务器

    不谷尉: 一直提示:无法访问目标主机

最新文章

  • .net Framework 4.6 WebAPI 使用Hangfire
  • C#基于Redis实现消息队列
  • .net Core FileHelper
2024年8篇
2023年16篇
2022年87篇
2021年55篇
2020年9篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

或与且与或非

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家中秋节商场创意美陈河南创意玻璃钢雕塑多少钱玻璃钢寺庙佛像雕塑加工定制浙江超市商场美陈市场价浙江玻璃钢雕塑图片湖南校园雕塑玻璃钢吉林佛像玻璃钢雕塑哪家便宜温州玻璃钢仿真水果雕塑黔南州商场美陈制作山东百货商场美陈玻璃钢商场美陈雕塑多少钱公园玻璃钢花盆厂家龙泉玻璃钢雕塑制造厂家工业玻璃钢雕塑摆件报价宁波玻璃钢雕塑销售厂家玻璃钢雕塑设计公司玻璃钢雕塑制作方法视频南宁玻璃钢泡沫雕塑商业街玻璃钢雕塑公司哪家好玻璃钢园林雕塑工程沭阳玻璃钢雕塑厂家浙江动物雕塑玻璃钢图片武汉玻璃钢花盆花器玻璃钢香蕉雕塑加工杭州特色玻璃钢雕塑销售厂家装饰商场美陈市场价汕尾玻璃钢景观雕塑造型精美梅州玻璃钢雕塑代理商商场美陈推荐青岛 程通济源玻璃钢镂空雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化