iOS-排序

数组里面的(字典 对象)排序和对比 去重复
01.(可变数组)
[self.tableview.dataArray addObjectsFromArray:self.liveCommentList];
            [parray addObjectsFromArray:self.tableview.dataArray];
                      
                   [parray sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
                          ZhiBoJianModel * dicum1 =obj1;
                                  ZhiBoJianModel * dicum2 =obj2;

                                  if (([dicum1.comment isEqualToString:dicum2.comment]==YES) &&([dicum1.Id isEqualToString:dicum2.Id]==YES)) {

                              [self.tableview.dataArray removeObject:dicum1];

                              }



                          return YES;

                      }];

02.不可变数组
//                NSArray * stortedarray3 =[arr1 sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
//                    NSDictionary * dicum1 =obj1;
//                    NSDictionary * dicum2 =obj2;
//
//                    if ([dicum1[@"age"] isEqualToString:dicum2[@"age"]]==YES) {
//
//                        [parray removeObject:dicum1];
//
//
//                    }
//
//                      //升序
//            //          NSComparisonResult  result =[obj1 compare:obj2];
//
//                      //降序
//                      //   NSComparisonResult  result =[obj2 compare:obj1];
//
//                      return YES;
//
//                  }];

NSArray *array = [NSArray arrayWithObjects:@"75",@"23",@"43",@"12",@"02", nil];

        //普通排序系统自带的升序
        NSArray *sortedArray1 = [array sortedArrayUsingSelector:@selector(compare:)];
//  NSLog(@"排序后1:%@",sortedArray1);

    //当然先这样实现了升序,但你想要降序,怎么办?
    //倒序输出 -> 得到降序数组
    sortedArray1 = [[sortedArray1 reverseObjectEnumerator] allObjects];
     NSLog(@"降序 = %@",sortedArray1);

没有带(字典(对象))的数组对比
//           NSArray * arr1 = @[@1,@2,@3];
//
//            NSArray * arr2 = @[@2,@3,@4,@5];
//
//            NSPredicate * filterPredicate = [NSPredicate predicateWithFormat:@"NOT (SELF IN %@)",arr1];
//
//            NSArray * filter = [arr2 filteredArrayUsingPredicate:filterPredicate];
//           NSLog(@"%@",filter);

    NSArray * stortedarray3 =[array sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {
        //升序
        NSComparisonResult  result =[obj1 compare:obj2];
        
        //降序
        //   NSComparisonResult  result =[obj2 compare:obj1];
        
        return result;
        
    }];
 
  1. 高级排序:按描述进行排序(制定一套排序规则 )
  NSMutableDictionary * dic =[NSMutableDictionary dictionary];
    dic[@"name"] =@"ahao";
    dic[@"age"] =@"17";
    NSMutableDictionary * dic12 =[NSMutableDictionary dictionary];
       dic12[@"name"] =@"yu";
       dic12[@"age"] =@"50";
    NSMutableDictionary * dic23 =[NSMutableDictionary dictionary];
       dic23[@"name"] =@"chong";
       dic23[@"age"] =@"30";
     NSArray *array = [NSArray arrayWithObjects:dic,dic12,dic23, nil];
    
    NSSortDescriptor * re =[NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
    NSSortDescriptor * re1 =[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
    
//按年龄排序
NSArray * dearray =[NSArray arrayWithObjects:re1,re, nil];
//(升序)    
    NSArray * dearray1 =[array sortedArrayUsingDescriptors:dearray];
    //降序
    NSArray *   sortedArray1 = [[dearray1 reverseObjectEnumerator] allObjects];
      NSLog(@"降序%@",sortedArray1);
    NSLog(@"排序%@",dearray1);

4 字典排序

 对字典(Key-Value)排序 不区分大小写
 
 @param dict 要排序的字典
 */
- (void)sortedDictionarybyLowercaseString:(NSDictionary *)dict{
    
    //将所有的key放进数组
    NSArray *allKeyArray = [dict allKeys];
    
    //序列化器对数组进行排序的block 返回值为排序后的数组
    NSArray *afterSortKeyArray = [allKeyArray sortedArrayUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id
    Nonnull obj2) {
/**
       
        - (NSComparisonResult)compare:(NSString *)string;
         
         compare方法的比较原理为,依次比较当前字符串的第一个字母:
         如果不同,按照输出排序结果
         如果相同,依次比较当前字符串的下一个字母(这里是第二个)
         以此类推
         
         排序结果
         NSComparisonResult resuest = [obj1 compare:obj2];为从小到大,即升序;
         NSComparisonResult resuest = [obj2 compare:obj1];为从大到小,即降序;
         
         注意:compare方法是区分大小写的,即按照ASCII排序
         */
        //小写转化
        obj1 = [obj1 lowercaseString];
        obj2 = [obj2 lowercaseString];
        //排序操作
        NSComparisonResult resuest = [obj1 compare:obj2];
        return resuest;
    }];
    NSLog(@"afterSortKeyArray:%@",afterSortKeyArray);
    
    //通过排列的key值获取value
    NSMutableArray *valueArray = [NSMutableArray array];
    for (NSString *sortsing in afterSortKeyArray) {
        NSString *valueString = [dict objectForKey:sortsing];
        [valueArray addObject:valueString];
    }
    NSLog(@"valueArray:%@",valueArray);
}

5 简单测试代码

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"Danny",@"Basd",@"12",@"Cerff",@"man",@"ABCDEFG",@"Sean",@"Cerf",nil];
    NSLog(@"dictionary:%@",dict);
    [self sortedDictionary:dict];

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343