ObjC-9 集合

来源:互联网 发布:淘宝同城送货上门 编辑:程序博客网 时间:2024/06/05 21:45
集合( NSArray、NSMutablearray、NSDictionary、NSMutabledictonary、NSSet、NSMutableset)
(1)字典的查询有些特别,是用 forKey 值进行的。
(2)其他的集合基本是通过 objectAtIndex 、atIndex 取得各个元素的下标、
(3)不可变集合内不能有相同的元素,可变数组可以有相同的元素
一、数组
可以用掉用“sort……select”进行数组内的元素排序
1、数组 NSArry 
例,  

  //实例学生对象 

    Student * st1 = [Student studentWithName:@"周杰伦" age:32];

    Student * st2 = [Student studentWithName:@"科比" age:35];

    Student * st3 = [Student studentWithName:@"欧文" age:21];

    

    //创建数组,把学生对象加入数组

    NSArray * array = [NSArray arrayWithObjects:st1,st2,st3, nil];

    

    //循环遍历

    for (int i=0; i<[array count]; i++) {

        //取得相应下标的学生

        Student * temp = [array objectAtIndex:i];

        //打印出相应下标的学生信息

        NSLog(@"索引为%d的学生姓名:%@,学生年龄:%d",i,temp.name,temp.age);

    }

    

    //快速 for-in 遍历循环——————重点学习的知识点

    for (Student * temp in array) {//意为在数组中的Stucdent类型数据的循环,循环数组元素种类数

        NSLog(@"索引的学生姓名:%@,学生年龄:%d",temp.name,temp.age);

    }


2、可变数组(NSMutablearray)

//测试可变数组的常用方法:添加、替换、删除

//可变数组可存储相同的元素,不可变数组不能


例,

//创建并实例化一个可变数组

    NSMutableArray * mutable = [[NSMutableArray alloc]initWithObjects:@"003",@"998",@"003", nil];

    

    //添加

    [mutable addObject:@"888"];

    NSLog(@"添加后的结果");

    NSLog(@"%@",mutable);//数组不用遍历就可打出所有元素

    

    //插入

    [mutable insertObject:@"000" atIndex:3];

    NSLog(@"插入后的结果");

    NSLog(@"%@",mutable);

    

    //删除

    [mutable removeObjectAtIndex:1];

    NSLog(@"删除后的结果");

    NSLog(@"%@",mutable);

   

    //数组的排序方法(该方法只能排英文或数字的字符串)

    NSLog(@"排序后的结果");

    NSLog(@"%@",[mutable sortedArrayUsingSelector:@selector(compare:)]);


二、字典
1、字典(NSDictionary)
     //字典的创建

    NSDictionary * dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"杰克",@"001",@"赵云",@"002",@"关羽",@"003", nil];

    

    //查找

    NSString * nm = [dic objectForKey:@"002"];

    NSLog(@"key值为002的是%@",nm);

    

    //用 for-in 遍历取值

    NSArray * keyArray = [dic allKeys];//取得了字典中所有的元素的key值

    for (NSString * object in keyArray) {//将keyArray数组中的key值赋给object  //key值也是的字符串

        NSLog(@"for-in 遍历\n%@",[dic objectForKey:object]);//取得相应KEY值的字符串

    }

    //用 for-in 遍历取值更简便的写法

    for (NSString * object in dic) {//

        NSLog(@"更简单的遍历\n%@",[dic objectForKey:object]);

    }


2、可变字典 NSMutabledictionary

 

    //________________创建可变字典(NSMutableDictionary)

    NSMutableDictionary * mutDic = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"杰克",@"001",@"赵云",@"002",@"关羽",@"003", nil];

    

    //添加

   [mutDic setObject:@"abc" forKey:@"004"];

    NSLog(@"添加后结果");

    NSLog(@"%@",mutDic);

    

    //NSLog(@"添加的结果:%@",[dic addOb])


     //替换

    [mutDic setObject:@"ff" forKey:@"001"];

    NSLog(@"替换后结果");

    NSLog(@"%@",mutDic);

    

    //删除

    [mutDic removeObjectForKey:@"003"];

    NSLog(@"删除后结果");

    NSLog(@"%@",mutDic);





思考:     可变集合与不可变集合的最大的区别在于:
Mutable类型的可以对集合进行修改(添加、替换、删除)等

    • 集合和数组有什么区别?数组内必须是相同类型的数据
    • 可变集合和不可变集合的区别?可变集合能有相同的元素,能够直接修改集合内人元素。不可变集合不行啊。
    • 集合的共有的操作和属性有那些?都有可变的集合,能通索引找到集合内的元素,都是字符串型
原创粉丝点击