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
*/