zoukankan      html  css  js  c++  java
  • 两数组并集交集差集

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace ServiceTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                IList<Student> oneStudents = new List<Student>();
                oneStudents.Add(new Student(1, false, "小新1", "one"));
                oneStudents.Add(new Student(2, false, "小新2", "one"));
    
                IList<Student> twoStudents = new List<Student>();
    
                twoStudents.Add(new Student(2, false, "小新2", "two"));
                twoStudents.Add(new Student(2, false, "小新22", "two"));
                twoStudents.Add(new Student(3, false, "小新3", "two"));
    
                var bingji = oneStudents.Union(twoStudents, new StudentListEquality()).ToList();//并(全)集 
                var jiaoji = oneStudents.Intersect(twoStudents, new StudentListEquality()).ToList();//交集 
                var chaji = oneStudents.Except(twoStudents, new StudentListEquality()).ToList();//差集
                var weiyi = twoStudents.Distinct(new StudentListEquality()).ToList();
                Console.WriteLine();
                Console.WriteLine("以下是并集的结果");
                bingji.ForEach(x =>
                {
                    Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());
              
                });
                Console.WriteLine();
                Console.WriteLine("以下是交集的结果");
                jiaoji.ForEach(x =>
                {
                    Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());
    
                });
    
                Console.WriteLine();
                Console.WriteLine("以下是差集的结果");
                chaji.ForEach(x =>
                {
                    Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());
    
                });
                Console.WriteLine();
                Console.WriteLine("以下是唯一的结果");
                weiyi.ForEach(x =>
                {
                    Console.WriteLine(x.StudentId.ToString() + "    " + x.Sex.ToString() + "   " + x.Name.ToString() + " " + x.Address.ToString());
    
                });
    
                Console.ReadLine();
                //new SignVerifyUnifiedOperationService().Debug();
                //Console.ReadLine();
            }
        }
        public class Student
        {
            public Student(int studentId, bool sex, String name, String address)
            {
                this.StudentId = studentId;
                this.Sex = sex;
                this.Name = name;
                this.Address = address;
            }
            public int StudentId { get; set; }
            public bool Sex { get; set; }
            public String Name { get; set; }
            public String Address { get; set; }
    
        }
        public class StudentListEquality : IEqualityComparer<Student>
        {
            public bool Equals(Student x, Student y)
            {
                return x.StudentId == y.StudentId;
            }
    
            public int GetHashCode(Student obj)
            {
                if (obj == null)
                {
                    return 0;
                }
                return obj.ToString().GetHashCode();
            }
        }
    }

    结果

    并集优先选oneStudents
    交集优先选oneStudents
    唯一集选择twoStudents顺序靠前的小新2,而不是小新22
    如果调换顺序结果也会颠倒

      IList<Student> oneStudents = new List<Student>();
                oneStudents.Add(new Student(1, false, "小新1", "one"));
                oneStudents.Add(new Student(2, false, "小新2", "one"));
    
                IList<Student> twoStudents = new List<Student>();
                twoStudents.Add(new Student(2, false, "小新22", "two"));//这里吧小新22放前面了
                twoStudents.Add(new Student(2, false, "小新2", "two"));
              
                twoStudents.Add(new Student(3, false, "小新3", "two"));
           //交换顺序
                var bingji = twoStudents.Union(oneStudents, new StudentListEquality()).ToList();//并(全)集 
                var jiaoji = twoStudents.Intersect(oneStudents, new StudentListEquality()).ToList();//交集 
                var chaji = twoStudents.Except(oneStudents, new StudentListEquality()).ToList();//差集
                var weiyi = twoStudents.Distinct(new StudentListEquality()).ToList();

    结果如下:

  • 相关阅读:
    静态库和动态库的使用
    UbuntuNFS服务器配置
    ubuntu的网络配置
    几个重要的shell命令:diff patch tar find grep
    msp430系统时钟
    平台总线驱动设计
    总线设备驱动模型
    中断分层处理-工作队列
    6410-混杂设备驱动模型
    ubuntu中执行docker info出现警告信息WARNING: No memory limit support 或 WARNING: No swap limit support
  • 原文地址:https://www.cnblogs.com/rexfieBlogs/p/7346369.html
Copyright © 2011-2022 走看看