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);
字典用于保存具有映射关系(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);
相关文章推荐
- 自动滚动的 tableView 和高度自适应的 textView
- JavaScript之引用类型Object类型
- Objective-C 字典的基本用法(NSDictionary和NSMutableDictionary)
- JsonObject和JsonArray的使用
- Effective Object C 2.0——对象、消息和运行期
- 为什么JavaScript里面typeof(null)的值是"object"?
- css z-index之object flash修正
- 详解Objective-C runtime
- [HSON : HC Script Object Notation] Finish Build 1 On GitHub
- Objective-C Runtime能做什么?
- 1.一对多双向关联(班级对学生):Object,hbm
- 1.一对多单向关联(班级对学生):Object,hbm
- object-c URL
- Type Object——类型对象
- 从Object对象中封装了其它对象,怎样取出呢?(Hibernate查询结果处理)
- psutil在rlimit方法在rhel6上报错AttributeError: 'Process' object has no attribute 'rlimit'
- 禅与 Objective-C 编程艺术
- objectToArray2stdClass Object.php
- java ObjectOutputStream
- runtime学习之- 关联(association),在分类中添加属性!