數(shù)組 字典 集合的區(qū)別
相同點:都是OC中的容器,可以儲存多個元素,每一個元素必須是對象,對象的類型不限
不同點:
1.使用場景:
數(shù)組:用來管理一組有序的元素
字典:管理一組具有--對應(yīng)關(guān)系的集合
集合:用來管理一組無序的并且具有互異性的集合
2.取值方式
數(shù)組:根據(jù)索引去取值
字典:根據(jù)key值去獲取value值
集合:anyobject是隨機取值
字典中儲存數(shù)據(jù)必須要是 key-Value成對存在,并且key是一個唯一的值, 一個key只能對應(yīng)一個Value。但是,一個Value可以對應(yīng)多個key,一個key Value組成字典中的一個元素,字典是無序的。
一、字典
1.創(chuàng)建對象
1.1使用初始化方法
//Value值xiaochen key值xc
NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"xiaochen",@"xc",@"xiaoyun",@"xy",@"xiaohong",@"xh",nil];
1.2遍歷構(gòu)造器的方式
//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.根據(jù)Key值獲取value值
//value 只要是對象就可以,但是key必須要遵從NSCoying協(xié)議,字符串默認是遵從的
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.創(chuàng)建對象
1.1初始化方法
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:10];
1. 2遍歷構(gòu)造器
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值
原理:先查找字典中有沒有對應(yīng)的key值,如果有,則修改key對應(yīng)的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遍歷構(gòu)造器
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
)}*/