您的位置:首页 > 职场人生

黑马程序员--集合

2015-10-11 12:59 453 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

-----------并不是生来就是大神、代码量决定一切、其他都是假象、大家都不是傻子对吧?-----------

*************NSArray
排序是有顺序的*********************

NSArray
不可变oc数组

问:为什么要学习oc数组 ?

答:因为他比c语言数组强大 他可以放多种类型的对象,可以将文件内容转换成数组来进行分割或者显示

如何创建数组? oc数组时不能放nil
的 因为他的结束就是nil

注意
总结出来创建方法 NSString stringWithFmat: 类创建方法一般都是用类名开始的 其他类以此类推

//NSArray
创建方式

NSArray *array = [NSArray arrayWithObjects:@"jack",@"rose", nil];

//读取数组的个数

NSLog(@"%ld",array.count);

//打印第一个位置的数组元素

NSLog(@"%@",array[0]);

//快速创建数组

NSArray *array2 = @[@"jack",@"hei",@"hei"];

NSLog(@"%@",array2[2]);

//如何遍历数组里的每个对象

int count = 0;

//遍历数组的每个对象

for(id obj in array2)

{

count++;

}

NSLog(@"%d",count);

//直接打印数组他会打印出所有数组中的元素

NSLog(@"%@",array2);

-----------------------------------------------------------------------------------------

NSMutableArray
可变数组

//创建一个可变数组

NSMutableArray *array = [NSMutableArray arrayWithObjects:@"hack",@"rose", nil];

//增加对象

[array addObject:@"123"];

//删除制定对象

[array removeObject:@"123"];

//删除制定位置的对象

[array removeObjectAtIndex:2];

-----------------------------------------------------------------------------------------

NSMutableSet *set = [NSMutalbeSet setWithObject:@"jack",@"rose",nil];
无序

//增加元素方法

[set addObject:@"lucy"];

//删除元素只能删除指定元素名称
不能删除指定位置 因为他时无序的

[set removeobject:@"rose"];

----------------------------

//
不可变数组不能使用快速创建

NSMutableArray *array = @[@"ack",@"rose"];

----------------------------

-----------------------------------------------------------------------------------------

总结:NSSet
和NSArray
比较

1>共同点

*都是集合,都能存放oc对象

*只能存放oc对象,不能存放非oc对象类型(基本数据类型:int,char,float等,结构体,枚举)

*本身都是不可变的,都有一个可变的子类

2>不同点

*NSArray
数组元素是有序的

*NSSet
是无序的

NSMutalbeSet
获取方法为

[set anyObject]
获取随机元素 返回NSString类型

NSString *str = [set anyObject];

------------------------------------------------------------------------------------------------

NSDictionary不可变
字典 排列没有顺序的
唯一key 不能有2个相同的key
如何出现后面写的将会覆盖之前写的

如果出现多个key
后面设置的会覆盖之前设置的

字典

问:问什么要学习NSDictionary ?

答:他很方便啦 例如讲 一个人的姓名 年龄 qq号 电话 性别 等等 完全可以利用字典来存储 然后放入NSArray中

搞成一个档案数据库 生活中也有很多例子 例如 在取款机 查询自己余额:他就会立刻显示你有多少钱

例如你查美女的电话号码 输入美女名字 立刻就会出来她的电话 等等 看你自己理解了

这里你要美女的号码 就代表key(索引) 而显示出来的号码入138138就表示value (内容)

他们是配对存在的 称为键值对 格式 一个key(唯一的) 独影一个value

key ---> value 称为键值对

索引 --->
文件内容

根据索引(key)就能找到对应的内容(value)

创建方法

//第一种方法

NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack",@"name"];

//第二种方法

NSDictionary *dict = [NSDictionary dictionarywithObject:@"jack,@"name",@"rose",@"name2",nil];

//快捷创建方法只能用在NSDictionary

//格式 @{@"key" : @"value", @"key" : @"value"};返回NSDictionary类型
必要用在NSMutableDictionary

NSdictionary *dict = @{@"name" : @"jack", @"name2" : @"lucy"};

//获取方法
他返回的是id类型

id obj = [dict ObjectForKey:@"name"];

//获取方法2

id obj = dict[@"name"];

----------------------------------------------------------------------------------------------

NSMutableDictionary
可变字典 无序

//创建字典方法

NSMutableDictionary *d = [NSMutableDictionary dictionaryWithObject:@"jack" forKey:@"name"];

//增减一个键值对

[d setObject:@"hehe" forKey:@"name2"];

//删除指定key的键值对

[d removeObjectForKey:@"name"];

//获取键值

id obj = d[@"name"];

NSLog(@"%@,%ld",obj,d.count);

//创建字典方法

NSMutableDictionary *d = [NSMutableDictionary dictionaryWithObject:@"jack" forKey:@"name"];

//增加键值对

[d setObject:@"rose" forKey:@"name2"];

[d setObject:@"lucy" forKey:@"name3"];

//遍历之前
先把key 传给数组
然后在 然后通过数组

//数组是有序的
通过数组遍历得到key[i]
然后在读取key[i]得到value

//所以说NSArray和Dictionary是一个很好的组合

NSArray *key = [d allKeys];

for(int i = 0 ; i < d.count ; i++)

{

NSLog(@"%@==%@",key[i],d[key[i]]);

}

//当然直接打印 dictionary
也是可以现实全部内容的

NSLog(@"%@",d);

-----------------------------------------------------

快速遍历方法
无序

NSDictionary *dict = @{@"name" : @"jakc", @"name2" : @"rose", @"name3" : @"lucy"};

//快速遍历方法
无序

[dict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {

//打印key
和value

NSLog(@"%@--%@",key,obj);

//停止遍历

//*stop = YES;

}];

集合总结:

1.NSArray\NSMutalbeArray
数组 有序

*有序

*快速创建: @[]; mutalbearray没有快速

*快速读取方法:array[i];

2.NSSet\NSMutalbeSet
数组

*无序

3.NSDictionary\NSMutalbeDictionary字典
键值对
通过key 找到value

*无序

*快速创建(不可变): @{key : value, key2 : value};

*快速读取:字典名[key];

练习:

//创建一个有4个对象的数组

NSArray *person = @[

@{@"name1" : @"jack1" , @"qq1" : @"9821"},

@{@"name2" : @"jack2" , @"qq2" : @"9822"},

@{@"name3" : @"jack3" , @"qq3" : @"9823"},

@{@"name4" : @"jack4" , @"qq4" : @"9824"}

];

//用数组person
得到第二个字典
[2]

NSDictionary * j = person[1];

//打印对象的所有属性

NSLog(@"%@",j);

//利用字典对象读取key
调用value

NSLog(@"%@",j[@"qq2"]);

// 先利用 person[1]对应的指点
然后在用字典取出key对应的数据

NSLog(@"%@",person[1][@"qq2"]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: