zoukankan      html  css  js  c++  java
  • List的集合的交集,差集,合并

    阅读了一些大神们的博客,觉得list的集合的交差合并很值得研究,接下来小弟我就简单的写一下。

    其实只要明白 LINQ查询操作符的Distinct、Union、Concat、Intersect、Except、Skip、Take、SkipWhile、TakeWhile、Single、SingleOrDefault、Reverse、SelectMany的使用,一些简单的操作就可以了。

    合并两个数组,并去掉重复元素,然后排序(C#)
     List<int> numbers1 = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 12, 10 };
                List<int> numbers2 = new List<int>() { 15, 14, 11, 13, 19, 18, 16, 17, 12, 10 };
                var newQuerty = numbers1.Concat(
                from n in numbers2
                where !numbers1.Contains(n)
                select n
                ).OrderBy(n => n);
                string count = "";
                foreach (int i in newQuerty)
                {
                    count += i + ",";
                }
                MessageBox.Show(count);
    在这简单的介绍几个关键字,Distinct、Union、Concat、Intersect、Except、Skip、Take
    Distinct  - 过滤集合中的相同项;
       List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
      var newlist=list.Distinct();
    得到的结果就是;1,2,3,4,5,6
     
    Union - 连接不同集合,自动过滤相同项
     List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
    List<int> list1= new List<int>() {5,6,6,7,8,9};
      var newlist=list.Union (list1);
    得到的结果就是;1,2,3,4,5,6,7,8,9
     
    Concat - 连接不同集合,不会自动过滤相同项;
     List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
    List<int> list1= new List<int>() {5,6,6,7,8,9};
      var newlist=list.Union (list1);
    得到的结果就是;1,2,3,4,4,5,6,6,5,6,6,7,8,9
     
    Intersect - 获取不同集合的相同项(交集);
    List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
    List<int> list1= new List<int>() {5,6,6,7,8,9};
      var newlist=list.Intersect (list1);
    得到的结果就是;5,6
     
    Except - 从某集合中删除其与另一个集合中相同的项;其实这个说简单点就是某集合中独有的元素
    List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
    List<int> list1= new List<int>() {5,6,6,7,8,9};
      var newlist=list.Except (list1);
    得到的结果就是;1,2,3,4
     
    Skip - 跳过集合的前n个元素;
    List<int> list= new List<int>() {1,2,3,4,4,5,6,6 };
      var newlist=list.Skip (3);
    得到的结果就是;4,4,5,6,6
     
    Take - 获取集合的前n个元素;延迟
    List<int> list= new List<int>() {1,2,2,3,4,4,5,6,6 };
      var newlist=list.Take (3);
    得到的结果就是;1,2,2
     
    如果想要深入了解,大家可以去这个大神的博客看看http://www.cnblogs.com/webabcd/archive/2007/10/16/925610.html 
  • 相关阅读:
    1.4.2 The Clocks
    剑指Offer:面试题14——调整数组顺序使奇数位于偶数前面(java实现)
    链表:删除链表中重复的结点(java实现)
    剑指Offer:面试题13——在O(1)时间删除链表结点
    剑指Offer:面试题12——打印1到最大的n位数(java实现)
    剑指Offer:面试题11——数值的整数次方(java实现)
    剑指Offer:面试题8——旋转数组的最小值(java实现)
    剑指Offer:面试题7——用两个栈实现队列(java实现)
    剑指Offer:面试题6——重建二叉树(java实现)
    剑指Offer:面试题5——从尾到头打印链表(java实现)
  • 原文地址:https://www.cnblogs.com/zhhwDavidblog/p/4129071.html
Copyright © 2011-2022 走看看