数组 字典 集合的区别
相同点:都是OC中的容器,可以储存多个元素,每一个元素必须是对象,对象的类型不限
不同点:
1.使用场景:
数组:用来管理一组有序的元素
字典:管理一组具有--对应关系的集合
集合:用来管理一组无序的并且具有互异性的集合
2.取值方式
数组:根据索引去取值
字典:根据key值去获取value值
集合:anyobject是随机取值
字典中储存数据必须要是 key-Value成对存在,并且key是一个唯一的值, 一个key只能对应一个Value。但是,一个Value可以对应多个key,一个key Value组成字典中的一个元素,字典是无序的。
一、字典
1.创建对象
1.1使用初始化方法
//Value值xiaochen key值xc
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaochen",@"xc",@"xiaoyun",@"xy",@"xiaohong",@"xh",nil];
1.2遍历构造器的方式
//Value值xiaochen key值xc
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"xiaochen",@"xc",@"xiaoyun",@"xy",@"xiaohong",@"xh",nil];
1.3字面量
//字面量key值在前 value在后
NSDictionary *dicts = @{@"name":@"xiaochen",@"gender":@"man",@"age":@"19"};
2.如何获取字典的长度
NSUInteger i = dicts.count;
NSLog(@"%lu",i);//3
3.根据Key值获取value值
//value 只要是对象就可以,但是key必须要遵从NSCoying协议,字符串默认是遵从的
NSString *str = [dicts objectForKey:@"name"];
NSLog(@"name = %@",str); // name = xiaochen
NSString *str1 = [dicts objectForKey:@"gender"];
NSLog(@"gender = %@",str1); //gender = man
NSString *str2 = [dicts objectForKey:@"age"];
NSLog(@"age = %@",str2); //age = 19
4.获取所有的Key值和所有的value值
NSArray *arr = [dicts allKeys]; //获取所有的Key值
NSLog(@"%@",arr);
/*(
name,
age,
gender
)*/
NSArray *ar =[dicts allValues];//获取所有的value值
NSLog(@"%@",ar);
/*(
xiaochen,
19,
man
)*/
二、可变字典
1.创建对象
1.1初始化方法
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];
1. 2遍历构造器
NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithCapacity:10];
1.3字面量
NSMutableDictionary *dicts = [@{@"key1":@"value1",@"key2":@"value2"}mutableCopy];
/*dicts = {
key1 = value1;
key2 = value2;
}
*/
2.添加元素
[dicts setObject:@"value3"forKey:@"key3"];
NSLog(@"%@",dicts);
/*{
key1 = value1;
key2 = value2;
key3 = value3;
}*/
3.修改value值
原理:先查找字典中有没有对应的key值,如果有,则修改key对应的value,如果没有直接添加
[dicts setObject:@"value10"forKey:@"key1"];
NSLog(@"%@",dicts);
/* {
key1 = value10;
key2 = value2;
key3 = value3;
}*/
4.删除
[dicts removeObjectForKey:@"key1"];
NSLog(@"%@",dicts);
/* {
key2 = value2;
key3 = value3;
}*/
集合
集合 -- 特点:无序的 有互异性
1.1初始化方法
NSSet *set1 =[[NSSet alloc]initWithObjects:@"dic",@"bb",@"cc",@"aa",@"bb",@"cc",nil];
NSLog(@"%@",set1);
/*{(
cc,
aa,
bb
)}*/
1.2遍历构造器
NSSet *set2 =[NSSet setWithObjects:@"aa",@"bb",@"cc",@"dd",@"se",nil];
NSLog(@"4%@",set2);
/*4{(
cc,
dd,
aa,
se,
bb)}*/
2.1获取集合中的元素
NSString *str= [set2 anyObject];//随机获取元素
NSLog(@"%@",str);
/* {(
cc,
dd,
aa,
se,
bb
)}*/
3可变集合
3.1初始化方法
NSMutableSet *set = [[NSMutableSet alloc] initWithCapacity:10];
3.2.添加元素
[set addObject:@"dic"];
[set addObject:@"dd"];
[set addObject:@"ff"];
NSLog(@"%@",set);
/*{(
dd,
ff
)}*/
3、3删除集合元素
[set removeObject:@"ff"];
NSLog(@"%@",set);
/*{(
dd
)}*/