首页 > 代码库 > OC 字典 集合

OC 字典 集合

用字典能有什么好处?

  1. 字典是个大容器,它能够储存多个数据

  2. 用字典存储的数据具有一一对应的关系(使用key来标识value)

  3. 字典中一对键值对(key-value)叫做字典中的一个元素,也叫一个条目,只要是对象就可以,不限制类型

  4. 字典是无序的

  5. 字典中的key是唯一的,一个key只能对应一个value,一个value可以对应多个key


创建字典对象:

1.便利构造器(+号方法):

NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:@"qinfen", @"name", @20, @"height", @12, @"age", nil];

dictionaryWithObjectsAndKeys:元素与元素之间用逗号分隔, nil 作为字典结束的标志

2.初始化方法(-号方法):

nitWithObjectsAndKeys:@"qinfen", @"name", @20, @"height", @12, @"age", nil];

initWithObjectsAndKeys:元素与元素之间用逗号分隔, nil 作为字典结束的标志

输出字典时用大括号括着元素显示,如: {
    age = 12;
    height = 20;
    name = qinfen;
}


获取字典元素个数

count方法

NSLog(@"%lu", [dic1 count]);


获取所有的key

allkeys方法

NSArray *key = [dic allKeys];
NSLog(@"%@", key);

输出显示是每个key


根据key获取对应的value

objectForKey:方法

NSString *value = [dic objectForKey:@"name"];
NSLog(@"%@", value);

输出显示的是@"name" 这个key对应的值的内容


字典快速遍历:

快速遍历对于数组来说,遍历得到的是数组中的每一个元素

而对于字典来说,遍历字典得到的是每个key,不是value,也不是key和value,但然后可以通过key获取value

for (NSString *key in dic) {
     //检索到key之后,通过objectForKey:获取对应的value
     NSLog(@"%@", [dic objectForKey:key]);  
}

以上是字典中常用的方法


可变字典NSMutableDictionary

可变字典比字典多了增加,删除,修改的方法


创建可变字典对象

NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObjectsAndKeys:@"xiaoguang", @"guanggun1", @"xiaomeng", @"guanggun2", @"xiashuai", @"guanggun3", nil];

dictionaryWithObjectsAndKeys:方法


删除元素

[dic removeObjectForKey:@"guanggun1"];

removeObjectForKey:方法,通过查找key,将key和key所对应的value一起删除,即删除了一对键值对


添加元素

[dic setObject:@"chengjie" forKey:@"guanggun1"];

setObject: value元素 forKey: key元素 方法


修改元素

[dic setObject:@"xiaocui" forKey:@"guanggun1"]

setObject: value元素 forKey: key元素 方法 工作原理:

先根据指定的key查找字典中是否存在相同的key,(查找字典中的是否存在指定的key) 如果存在,则修改key对应的value,如果不存在,在字典中添加一个元素,key-value键值对


集合


创建集合对象

便利构造器

NSSet *set1 = [NSSet setWithObjects:@"1", @"2", @"3", @"4", @"5", nil];

setWithObjects:方法

初始化方法

NSSet *set2 = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"4", @"5", @"1", @"2", @"3", @"4", @"5", nil];

initWithObjects:方法


获取集合元素个数

count方法

NSLog(@"%lu", [set2 count]);


获取集合中的某个元素

NSString *str1 = [set2 anyObject];

anyObject方法


判断集合中是否包含某个元素

BOOL isExist = [set2 containsObject:@"3"];

containsObject:方法  参数为要查找得元素,返回值为布尔值


可变集合


添加元素

[set3 addObject:@"6"];

addObject:方法


移除元素

[set3 removeObject:@"5"];

removeObject:方法