Objective_C_05

15/12/10
//  Objective_C_05

#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
#pragma mark-----数组排序-----
//    可变数组改变的时自身  不可变数组生成一个新的数组
//    数组给提供一个方法,实现排序
//    可变数组方法:sortUsingSelector
//    不可变数组方法:sortedArrayUsingSelector
//    一个参数:一个方法,返回是否进行元素交换
//    @selector会去对象中寻找括号里面的方法名,并返回
//    简单理解:参数是SEL,就是要在这里传入一个方法,做法就是通过@selector和括号里面的方法名指定方法
//    NSMutableArray *sortArray = [NSMutableArray arrayWithObjects:@"aa",@"bb",@"cc",@"ac",@"df",@"bb",@"zz",@"mm", nil];
//    [sortArray sortUsingSelector:@selector(compare:)];
//    NSLog(@"%@",sortArray);//从小到大
//    for (int i = 0; i < [sortArray count]/2; i++) {
//        [sortArray exchangeObjectAtIndex:i withObjectAtIndex:[sortArray count]-i-1];
//    }
//    NSLog(@"%@",sortArray);//从大到小
    
#pragma mark-----字典类-----
    /*
     字典的一些特点
     1.字典元素是以键值对的形式存在的
     2.键值对就是 key:value 的形式
     3.字典中元素的存放是无序的
     4.不可以通过下标获取元素,需要通过key获取元素
     5.字典中的key是不允许重复的,但是value是可以重复的
     6.字典有可变和不可变之分:NSDictionary是NSMutableDictionary 父类
     */
    
#pragma mark-----不可变字典-----
//    创建不可变字典
//    第1种:
    NSDictionary *dic = [[NSDictionary alloc]initWithObjects:@[@"value1",@"value2",@"value3"] forKeys:@[@"key1",@"key2",@"key3"]];
    NSLog(@"%@",dic);
//    第2种:
    NSDictionary *dic2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",@"value3",@"key3", nil];
    NSLog(@"%@",dic2);
//    第3种  字面量
    NSDictionary *dic3 = @{
                           @"key1":@"value1",
                           @"key2":@"value2",
                           @"key3":@"value3"
                           };
    NSLog(@"%@",dic3);
    
    NSDictionary *dic11 = @{
                           @"name":@"刘能",
                           @"age":@"42",
                           @"sex":@"男"
                           };
#pragma mark-----求有几对键值对-----
    NSLog(@"%lu",[dic11 count]);
#pragma mark-----求关键字目录(求所有的key)-----
    NSArray *temp = [dic11 allKeys];
    NSLog(@"%@",temp);
#pragma mark-----求所有的value值-----
    temp = [dic11 allValues];
    NSLog(@"%@",temp);//UTF-8
#pragma mark-----通过key取value的值-----
//    正常方式
    NSLog(@"%@",[dic11 valueForKey:@"sex"]);
//    特殊方式
    NSLog(@"%@",dic11[@"name"]);
//    实现遍历一个字典里面的所有元素
    for (int i = 0; i < [dic11 count]; i++) {
        NSArray *temp = [dic11 allKeys];
        NSLog(@"%@ %@",temp[i],dic11[temp[i]]);
    }
    
    NSArray *keys = [dic11 allKeys];
    for (int i = 0; i < [keys count]; i++) {
        NSLog(@"%@ %@",keys[i],dic11[keys[i]]);
    }
    
#pragma mark-----可变字典-----
//    NSMutableDictionary *mutabledic = dic11.mutableCopy;
    NSMutableDictionary *mDic = [[NSMutableDictionary alloc] init];
#pragma mark-----向字典里面添加键值对-----
    [mDic setObject:@"翠花" forKey:@"name"];
    NSLog(@"添加后%@",mDic[@"name"]);
//    在OC中,汉字处理有些异常
//    如果汉字放在数组和字典类中,直接整类打印,汉字以Unicode形式打印
//    如果取出之后打印,会以NSString字符串的形式打印
#pragma mark-----向可变字典中删除一个键值对-----
//    [mDic removeObjectForKey:@"name"];
//    NSLog(@"删除后%@ %@",@"name",mDic[@"name"]);
#pragma mark-----修改可变字典中的键值对-----
    [mDic setObject:@"西门庆" forKey:@"name"];
     NSLog(@"修改%@ %@",@"name",mDic[@"name"]);
#pragma mark-----删除全部-----
    [mDic removeAllObjects];
    NSLog(@"全部删除%@",mDic);
    
//    用字典表示一个区的名字和人口数
    NSMutableDictionary *district = [[NSMutableDictionary alloc]init];
    [district setObject:@"districtName" forKey:@"name"];
    [district setObject:@"personNumber" forKey:@"number"];
    NSLog(@"%@",district);
//    用字典表示一个城市的名字和市区名
    NSDictionary *city = @{
                           @"cityname":@"district"
                           };
    NSLog(@"%@",city);
    
#pragma mark-----集合-----
    /*
     集合:NSSet
     特点:
     1.集合是乱序的
     2.集合中的元素是不重复的
     */
#pragma mark-----集合的初始化-----
    NSSet *set = [NSSet setWithObjects:@"zhaobenshan",@"zhaosi",@"xiaobao",@"liuneng",nil];
//    集合没有字面量
#pragma mark-----打印集合元素的个数-----
    NSLog(@"%lu",[set count]);
#pragma marl-----打印集合中是否包含某个元素-----
    NSLog(@"%d",[set containsObject:@"xiaobao"]);
#pragma mark-----返回集合中的任意一个元素-----
    NSLog(@"%@",[set anyObject]);
#pragma mark-----返回集合中的所有元素-----
    NSLog(@"%@",[set allObjects]);/*(
                                   zhaobenshan,
                                   xiaobao,
                                   liuneng,
                                   zhaosi
                                   )*/
    NSLog(@"%@",set);/*{(
                      zhaobenshan,
                      xiaobao,
                      liuneng,
                      zhaosi
                      )}*/
    
#pragma mark-----可变集合-----
//    NSMutableSet *set1 = set.mutableCopy;
//    创建一个空的集合
    NSMutableSet *set2 = [NSMutableSet set];
#pragma mark-----给集合添加元素-----
    [set2 addObject:@"wangdachui"];
    NSArray *arr = @[@"zhaotiedan",@"gangdan"];
    [set2 addObject:@"wangdachui"];//利用set的不重复性,可以实现数组元素的去重
    [set2 addObjectsFromArray:arr];
    NSLog(@"添加后%@",[set2 allObjects]);
    
//    NSMutableArray *arr = [[NSMutableArray alloc]initWithArray:@[@"zhaotiedan",@"gangdan"]];
#pragma mark-----删除元素-----
    [set2 removeObject:@"wangdachui"];
    NSLog(@"%@",[set2 allObjects]);
 
#pragma mark-----带计数的集合-----
    /*
     带计数的集合,因为集合重复添加只保留一个,OC就提供了一个集合类,可以统计每个元素重复的次数
     */
    NSCountedSet *cSet = [NSCountedSet set];
    [cSet addObject:@"shanyang"];
    [cSet addObject:@"xiaoshengyang"];
    [cSet addObject:@"shanyang"];
    NSLog(@"%@",[cSet allObjects]);/*(
                                    xiaoshengyang,
                                    shanyang
                                    )*/
    NSLog(@"shanyang出现次数:%ld",[cSet countForObject:@"shanyang"]);//shanyang出现次数:2
//    NSCountedSet 是继承与NSMutableSet的,所有的可变集合中的方法都可以使用
    
#pragma mark-----快速遍历-----
//    增强for循环
//    for in
//    第一个参数:是每一个元素的类型;
//    第二个参数:是用什么来代表这个元素;
//    第三个参数:所有的元素都放在哪;
//    for (<#type *object#> in <#collection#>) {
//        <#statements#>
//    }
//    快速遍历数组
    NSArray *aa = @[@"tiedan",@"gangdan",@"yadna",@"jidan"];
    for (NSString *str in aa) {
        NSLog(@"%@",str);
    }
    NSLog(@"快速遍历字典");
//    快速遍历字典
    NSDictionary *dic12 = @{
                            @"name1":@"tiedan",
                            @"name2":@"gangdan",
                            @"name3":@"tiechui"
                            };
    
    for (NSSet *s in dic12) {
        NSLog(@"%@ %@",s,dic12[s]);
    }
    //    for (NSSet *str in cSet) {
    //        if ([str isEqualToSet:@"shanyang"]) {
    //            NSLog(@"有");
    //        }
    //    }
    return 0;
}

posted @ 2015-12-19 14:37  DH_Fantasy  阅读(144)  评论(0)    收藏  举报