使用字典来进行数据的整理

 NSArray * value = @[@"第一",@"第二",@"第三",@"第四",@"第五",@"第六"];
    NSArray * key = @[@1,@2,@2,@4,@5,@6];//有两个ID为2的人,希望能将这两个人合并为一个并且将他们的成绩相加
    NSArray * date = @[@"2016-01-01",@"2016-01-02",@"2016-01-03",@"2016-01-04",@"2016-01-05",@"2016-01-06"];
    NSArray * english = @[@"11",@"12",@"13",@"14",@"15",@"16"];
    NSArray * match = @[@"11",@"12",@"13",@"14",@"15",@"16"];
    
    NSMutableArray * testArray = [[NSMutableArray alloc]init];
    for (int i = 0; i < 5; i++) {
        MyModel * model = [[MyModel alloc]init];
        model.content = value[i];
        model.ID = [key[i] integerValue];
        model.date = date[i];
        model.english = [english[i] integerValue];
        model.match = [match[i] integerValue];
        
        [testArray addObject:model];
        
    }
//以上将数据整理成模型放入数组
    
    NSMutableDictionary * dic = [[NSMutableDictionary alloc]init];
    for (MyModel * model in testArray) {
        MyModel * model2 = [dic objectForKey:@(model.ID)];
        if (model2 == nil) {//如果字典解析出的值不为0说明我们已经添加过这个ID了,所以这时候只需要对字典对应的值相加,就很好的除去了重复的ID
            [dic setObject:model forKey:@(model.ID)];
        }else{
        //不为0则相加,改变key所对应的值
            model2.english = model2.english + model.english;
        }
    }
    
    NSArray * array = dic.allValues;
    for (MyModel * model in array) {
        NSLog(@"ID:%ld english:%ld",(long)model.ID,(long)model.english);
    }
/*
输出结果
 ID:2 english:25
 ID:5 english:15
 ID:1 english:11
 ID:4 english:14
顺序乱了 ,根据ID排序即可
*/

排序

//可通过这个方法排序,用xcode自带的排序方法,轻松加愉快
- (NSArray<ObjectType> *)sortedArrayUsingComparator:(NSComparator)cmptr NS_AVAILABLE(10_6, 4_0);

NSArray * array = dic.allValues;
    NSArray * lastArray;
    if (array.count > 0) {
    lastArray = [array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
            MyModel * mode1 = (MyModel *)obj1;
            MyModel * mode2 = (MyModel *)obj2;
            if (mode1.ID > mode2.ID) {
                return 1;//往后交换位置
            }else if (mode1.ID == mode2.ID)
            {
                return 0;//不变
            }
            return -1;//往前交互位置
        }];
    }
    for (MyModel * model in lastArray) {
        NSLog(@"ID:%ld english:%ld",(long)model.ID,(long)model.english);
    }

/*
输出结果
 ID:1 english:11
 ID:2 english:25
 ID:4 english:14
 ID:5 english:15
*/

 

转载于:https://my.oschina.net/langzhouzhou1/blog/677202

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值