您的位置:首页 > 移动开发 > Objective-C

objective-C基础----字典,集合

2016-04-19 17:53 621 查看
字典
字典用于保存具有映射关系(key
- value)的数据的集合

对于name:张三

来讲,name就是key。key对应的value就是张三

一个key-value的组合被认为是一个条目,字典是存储key-value对的容器

特点:
1、与数组不同,字典靠key来存储数据,数组是通过下标存储元素
2、key不能重复,value必须是对象,(如果不是对象,有NSNumber、NSValue)
3、键值对在字典中是无序存储的
4、字典也有可变和不可变之分
5、不可变字典,字典一旦创建,键值对就不能修改,不可删除,不可添加。仅能读取key或value
6、字典中元素是成对出现的,不能出现单个元素个数

//可变字典

//添加、修改、删除

[mdic
setObject:@"Mac mini"

forKey:@"电脑"];

//电脑---key mini
--- value

[mdic
setValue:@"发夹"

forKey:@"饰品"];

//修改key

对应的value值
[mdic
setValue:@"OPPO"

forKey:@"手机"];

//setValue: forKey
什么时候添加新键值对

什么时候修改键值对

当字典中的没有这个key

值的时候,setValue: forKey

就是添加新的键值对

当字典中有这个key的时候,setValue:
forKey
就是修改相应的key下边对应的value值

NSMutableArray
*key1 = mdic.allKeys;

NSMutableArray
*value5 = mdic.allValues;

for
(int

i =
0; i < mdic.count;
i++) {

NSLog(@"key = %@ value = %@",[key1

objectAtIndex:i], [value5

objectAtIndex:i]);

}

//删除

[mdic
removeObjectForKey:@"电脑"];

//通过key取value

NSMutableArray
*keyof = mdic.allKeys;

for
(int

i =
0; i < mdic.count;
i++) {

NSLog(@"key = %@ value = %@",keyof[i],
[mdic
valueForKey:keyof[i]]);

}

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

集合

iOS中也有表示数学中表示集合的类,叫做NSSet

集合的特点

1、与数学中的集合我一样,集合中元素是唯一的(不能重复)

2、集合中元素是无序存储的

3、集合中元素必须是对象类型(如果是基本数据类型需要通过NSNumber,NSValue转化为对象类型)

4、iOS中集合有可变和不可变之分:NSSet


NSMutableSet

NSSet
*set = [[NSSet

alloc]

initWithObjects:@"shmily",@"豫剧",@"河南梆子",@"123456",@"粤剧",@"京剧",

nil];

//获取集合元素个数,重复的元素会被覆盖,只算一个
----------
集合最大的特点

NSLog(@"%lu",(unsigned

long)set.count);

//获取集合中的某个对象

/*

如果集合中有这个元素就返回,没有就是nil

*/

NSString
*name = [set
member:@"京剧"];

NSLog(@"name = %@",name);

//containsObject:
判断集合中是否会由这个元素

BOOL
ishavejing = [set
containsObject:@"河南梆子"];

NSLog(@"%d",ishavejing);

BOOL
ishaveyue = [set
containsObject:@"余额"];

NSLog(@"%d",ishaveyue);

NSMutableArray
*haih = [set
allObjects];

//返回集合中所有的元素

for
(int

i =
0; i < haih.count;
i++) {

NSLog(@"%@",haih[i]);

}

//anyObject
返回集合中某一个元素,不保证每次运行出来的结果都是随机的(第一次是随机的,以后都是固定的)

NSLog(@"--------%@--------",[set

anyObject]);

//可变集合

NSMutableSet
*mset = [[NSMutableSet

alloc]

initWithObjects:@"夏商周",@"春秋",@"唐宋",@"元",@"唐宋",@"明",

nil];

[mset

addObject:@"晚清"];

//添加

for
(int

i =
0; i < mset.count;
i++) {

NSLog(@"%@",[mset

allObjects][i]);

}

NSLog(@"----------------------------");

[mset

removeObject:@"元"];

//删除

for
(int

i =
0; i < mset.count;
i++) {

NSLog(@"%@",[mset

allObjects][i]);

}

//计数集合

NSCountedSet
*cset = [[NSCountedSet

alloc]

initWithObjects:@"跳绳",@"丢沙包",@"跳绳",@"踢毽子",@"打羽毛球",@"赛跑",@"打羽毛球",

nil];

NSLog(@"%lu",cset.count);

NSUInteger
count2 = [cset
countForObject:@"跳绳"];

//计算某个元素在集合中出现的个数(次数)

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