//
//  main.m
//  Object_C 05 字典
//
//  Created by lanou3g on 15/8/22.
//  Copyright (c) 2015年 lanou3g. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        /**
         1.字典元素是以键值对的方式存储的
         2.键值对就是key:value的形式
         3.字典中的元素存放是无序的
         4.通过key值取元素的值
         5.字典中的key值不允许重复,但是value可以重复
         6.字典有可变和不可变之分
         7.key是唯一的,不能为空,但value可以重复
         */
    //创典对建字象
        NSArray *arrValue=@[@"zhang",@"yang",@"xiao"];
        NSArray *arrKey=@[@"key1",@"key2",@"key3"];
        NSDictionary *dic=[[NSDictionary alloc]initWithObjects:arrValue forKeys:arrKey];
        NSLog(@"%@",dic);
        NSLog(@"%@",arrKey);
        //字面量方式
        NSDictionary *dic1=@{@"key1":@"value1",
  @"key2":@"value2",
                            @"key3":@"value3"
                            };
        NSLog(@"%@",dic);
    //字典的元素个数[dic1 count];
        NSLog(@"%lu",[dic1 count]);
        //获取key值
        NSLog(@"%@",[dic1 allKeys]);
        //获取value值
        NSLog(@"%@",[dic1 allValues]);
        //通过key值取出value值
        NSLog(@"%@",[dic1 valueForKey:@"key1"]);
        NSLog(@"%@",dic1[@"key2"]);
        //可变字典***********************************
        //使用便利构造器创建空的可变字典
        NSMutableDictionary *dic2=[NSMutableDictionary dictionary];
        NSLog(@"%@",dic2);
//        NSMutableDictionary *dic3=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"1",@"2"@"3",@"4",@"5",@"6", nil]
        //添加键值对
        [dic2 setObject:@"qq富强" forKey:@"num1"];
        [dic2 setObject:@"ww蛮强" forKey:@"num2"];
        [dic2 setObject:@"ee密码" forKey:@"num3"];
        NSLog(@"%@",dic2);
        //根据key值删除元素
        [dic2 removeObjectForKey:@"num1"];
        NSLog(@"%@",dic2);
        //修改一个元素[修改元素的时候,有key就修改对应的value值,没有的话就添加一个]
        [dic2 setObject:@"fff" forKey:@"num1"];
        NSLog(@"%@",dic2);
        [dic2 setObject:@"aaa" forKey:@"num2"];
//        字典的遍历
        NSArray *array=[dic2 allKeys];
        for (int i=0; i<[dic2 count]; i++) {
            NSLog(@"%@",[dic2 objectForKey:array]);
        }
        //删除
        [dic2 removeAllObjects];
        NSLog(@"%@",dic2);
        
         字典的对象是数组
        NSArray *arr1=@[@"v1",@"v2",@"v3",@"v4"];
        NSArray *arr2=@[@"k1",@"k2",@"k2",@"k4"];
        NSMutableDictionary *dic=[NSMutableDictionary dictionaryWithObjectsAndKeys:arr1,arr2, nil];
        //遍历
        for (NSString *str in dic) {
            //针对对应的key找到value是一个数组,所以用一个数组对象来接收
            NSArray *arr=dic[str];
            for (NSString *temp in arr) {
                NSLog(@"%@",temp);
            }
        }
        
        //数组里的对象是字典
        NSMutableDictionary *dic1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"anyichen",@"name",@"31",@"age", nil];
        NSMutableDictionary *dic2=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"xiaoyahuizi",@"name",@"11",@"age", nil];
        NSMutableDictionary *dic3=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"ningzhiyuan",@"name",@"22",@"age", nil];
        NSArray *arr=@[dic1,dic2,dic3];
        for (NSMutableDictionary *d in arr) {
            for (NSString *s in arr) {
                NSLog(@"%@",s);
            }
        }
        //打印value
        for (NSDictionary *dic in arr) {
            for (NSString *s in dic) {
                NSArray *arr=dic[s];
                NSLog(@"%@",arr);
            }
        }
        for (NSDictionary *dic in arr) {
            for (NSString *key in dic) {
                NSLog(@"%@",dic[key]);
            }
        }
        

        
        
        //集合
        //不可变集
//        NSSet *set=[[NSSet alloc]init];
        //创建集合
        NSSet *set=[NSSet setWithObjects:@"a",@"s",@"d",@"f",@"g", nil];
        NSLog(@"%@",set);
        //打印集合的个数
        NSLog(@"%lu",[set count]);
        //随机获取获取一个元素
        NSLog(@"%@",[set anyObject]);
        //判断集合中是否包含某个元素
        BOOL r=[set containsObject:@"a"];
        NSLog(@"d",r);
        //将集合中的元素加到数组中
        NSArray *array=[set allObjects];
        NSLog(@"%@",array);
        
        //********************************
        //可变集合NSMutableSet
        NSMutableSet *set1=[NSMutableSet set];
        //将数组中的元素添加到集合
        [set1 addObjectsFromArray:array];
        NSLog(@"%@",set1);
        //删除所有元素
        [set1 removeAllObjects];
        NSLog(@"%@",set1);
        //将一个集合中的内容设置到另一个集合中
        NSMutableSet *anOther=[NSMutableSet setWithObject:@"AAA"];
        //接收的set清空,然后把另一个集合存入set
        [set1 setSet:anOther];
        NSLog(@"%@",set1);
        
        
        //        快速遍历【枚举】
        NSArray *arr=@[@"1",@"2",@"3",@"4",@"5"];
        for (int i=0; i<[arr count]; i++) {
            NSLog(@"%@",arr[i]);
        }
        //快速枚举 (快速遍历)
        for (NSString * obj in arr) {
            NSLog(@"%@",obj);
        }
        
        
        NSDictionary *dic=@{@"key1":@"value1",
                            @"key2":@"value2",
                            @"key3":@"value3"};
        NSArray *array=[dic allKeys];
        for (id key in array) {
            NSLog(@"%@",dic[key]);
        }
        //         快速遍历对于字典来说,每次获取的都是key值
        for (NSString *str in dic) {
            NSLog(@"key=%@,value=%@",str,dic[str]);
        }
        
        
        //枚举器是一个工具帮我们从数组中将元素逐个取出
        NSArray *arr=@[@"1",@"2",@"3",@"4",@"5"];
        //枚举器
        NSEnumerator *enum1=[arr objectEnumerator];
        id obj;
        while (obj=[enum1 nextObject]) {
            NSLog(@"正在遍历:%@",obj);
        }NSLog(@"结束:%@",[enum1 nextObject]);
        
    
        
    }
    return 0;
}

posted on 2015-08-23 20:31  倔强滴小毛驴  阅读(180)  评论(0)    收藏  举报