zoukankan      html  css  js  c++  java
  • IOS开发中集合操作 处理数据的 交集 并集 差集

    场景:在日常开发中我们经常会遇到 网络数据  和本地数据  排重等 求取两个集合数据的交集 并集 差集的情况。

    1.一般简单处理:比较好理解的逻辑写法,大家一般会通过 数组遍历嵌套for循环加if条件判读进行数据逐条筛选,然后得到一个完整的最后的 处理完(交集,并集,差集)后的数组,进行后续操作。

    2.减少代码行数的处理方式:转发http://www.cnblogs.com/GJ-ios/p/6277303.html)

    iOS 数组集合操作(交集,并集,差集,子集)

    1、求数组的 交集,并集,差集

    1
    2
    3
    4
    5
    6
    7
    8
    NSArray *array1 = @[@"1",@"2",@"3"];
    NSArray *array2 = @[@"1",@"5",@"6"]; 
    NSMutableSet *set1 = [NSMutableSet setWithArray:array1];
    NSMutableSet *set2 = [NSMutableSet setWithArray:array2]; 
     
    [set1 unionSet:set2];       //取并集后 set1中为1,2,3,5,6
    [set1 intersectSet:set2];  //取交集后 set1中为1
    [set1 minusSet:set2];      //取差集后 set1中为2,3,5,6

    2、判断一个数组是否为另一个数组的子集

    1
    2
    3
    4
    5
    6
    NSArray *array3 = @[@"1",@"2"];
    NSArray *array4 = @[@"1",@"2",@"6"];
    NSSet *set3 = [NSSet setWithArray:array3];
    NSSet *set4 = [NSSet setWithArray:array4];
     
    BOOL isSub = [set3 isSubsetOfSet:set4];     //isSub为YES

    3、判断某个对象是否在某个数组中

    1
    BOOL isExist = [array3 containsObject:@"1"]; //isExist为YES

    4、补充说明:

    以下三种集合类是不可变的(一旦初始化后,就不能改变)

    NSArray 用于对象有序集合(数组)
    NSSet 用于对象无序集合 (集合)
    NSDictionary用于键值映射(字典)

    以下三种是可变集合类(这三种可变集合类是对应上面三种集合类的子类):

    NSMutableArray
    NSMutableSet 可修改的集合。主要用于集合运算(并集,交集,差集)
    NSMutableDictionary 允许用户添加和删除key和value

  • 相关阅读:
    vue-实践1
    node 基本使用
    vue通信
    初始AMD和Common.js
    vue正确引入第三方包
    常见的java设计模式
    springboot加ES实现全局检索
    Cookie丢失的原因
    动态SQL
    用Java实现给图片添加文字
  • 原文地址:https://www.cnblogs.com/lzxpythonhome/p/6599664.html
Copyright © 2011-2022 走看看