//创建一个字典
//key:能够当key值的一定会遵循NSCopying的协议
//Value:任意类类型的
//1.正常的初始化方法
NSDictionary *dic1=[[NSDictionary alloc] initWithObjectsAndKeys:@"张三",@"name",@"男",@"sex",@"18",@"age", nil];
NSLog(@"%@",dic1); //哈希排序排放的
//2.使用数组创建
NSArray *keyArray=[NSArray arrayWithObjects:@"name",@"sex",@"age", nil];
NSArray *valueArray=[NSArray arrayWithObjects:@"张三",@"男",@"18", nil];
NSDictionary *dic2=[[NSDictionary alloc] initWithObjects:valueArray forKeys:keyArray];
NSLog(@"%@",dic2);
//3.使用字典创建字典
NSDictionary *dic3=[NSDictionary dictionaryWithDictionary:dic2];
NSLog(@"%@",dic3);
//常用方法
//1.取出Key的值
NSArray *ar1= [dic1 allKeys];
NSLog(@"%@",ar1);
//去除Value的值
NSArray *ar2=[dic1 allValues];
NSLog(@"%@",ar2);
//根据制定的key值返回相应的Value值
NSString *s1= [dic3 objectForKey:@"age"];
NSLog(@"%@",s1);
Person *p1=[[Person alloc] initWithName:@"zaizhi" age:18];
Person *p2=[[Person alloc] initWithName:@"guodong" age:16];
Person *p3=[[Person alloc] initWithName:@"xiaoxu" age:15];
NSArray *keyar1=[NSArray arrayWithObjects:[p1 name],[p2 name],[p3 name], nil];
NSArray *valueArray1=[NSArray arrayWithObjects:p1,p2 ,p3, nil];
NSDictionary *dic4=[[NSDictionary alloc] initWithObjects:valueArray1 forKeys:keyar1];
NSLog(@"%@",dic4);
NSLog(@"+++++++++%@",p1);
//可变字典
//创建一个空的字典
NSMutableDictionary *mdic1=[NSMutableDictionary dictionary];
//添加元素
[mdic1 setObject:@"abc" forKey:@"1"];
NSLog(@"%@",mdic1);
//删除元素
[mdic1 removeObjectForKey:@"1"];
NSLog(@"%@",mdic1);
[mdic1 setObject:@"a" forKey:@"1"];
[mdic1 setObject:@"b" forKey:@"2"];
[mdic1 setObject:@"c" forKey:@"3"];
NSLog(@"%@",mdic1);
//修改:首先去找key值,看有没有key值.
//如果有,就用新值替换旧值,如果没有新增
[mdic1 setObject:@"x" forKey:@"1"];
NSLog(@"%@",mdic1);
//NSSet
//便利构造器
NSSet *set1=[NSSet setWithObjects:@"1",@"2",@"3",@"3", nil];
NSLog(@"%@",set1);
//使用方法
//返回元素个数
NSInteger r=[set1 count];
NSLog(@"%ld",r);
//随机返回一个对象,但是不保证一定是随机的,一般是第一个.
NSString *r1= [set1 anyObject];
NSLog(@"%@",r1);
NSSet *set2=[NSSet setWithObjects:@"1",@"2",@"3",@"4", nil];
//判断两个集是否相等,返回值为 真假.
BOOL v= [set1 isEqualToSet:set2];
NSLog(@"v:%d",v);
//输入一个数,判断传入的对象是否在这个集中,在就返回这个对象,不在返回null,
NSString *v1= [set1 member:@"3"];
NSLog(@"%@",v1);
//可变的NSMutableSet
NSMutableSet *mset1=[NSMutableSet set];
[mset1 addObject:@"1"];
NSLog(@"%@",mset1);
[mset1 removeObject:@"1"];
NSLog(@"%@",mset1);
[mset1 addObject:@"6"];
[mset1 setSet:set2];
NSLog(@"%@",mset1);
NSCountedSet 能打印出集合里边重复的东西
举例
NSCountedSet *cSet=[[NSCountedSet alloc] initWithObjects:@"a",@"b",@"c",@"d",@"a", nil];
NSLog(@"-----%@",cSet);
举例二
NSArray *arr1=[NSArray arrayWithObjects:@"aaa",@"bbb",@"ccc",@"ddd", nil];
for(NSString *s in arr1){
NSLog(@"%@",s);
}
NSDictionary *dic1=[NSDictionary dictionaryWithObjectsAndKeys:@"a",@"1",@"b",@"2",@"c",@"3",nil];
//枚举,快速,便利
for(NSString *s1 in dic1){
NSLog(@"%@",[dic1 objectForKey:s1]);
}
比较数组里边数字从大到小排序
-(NSComparisonResult)sortUseingAge:(Student *)aStudent{
if ([self age]>[aStudent age]) {
return NSOrderedDescending;
}else if ([self age]==[aStudent age]){
return NSOrderedSame;
}
else{
return NSOrderedAscending;
}
}
比较字符串排序
-(NSComparisonResult)sortUseingName:(Student *)aStudent{
if ([[self name] compare:[aStudent name]]==NSOrderedDescending) {
return NSOrderedDescending;
}else if ([[self name] compare:[aStudent name]]==NSOrderedSame){
return NSOrderedSame;
}
else{
return NSOrderedAscending;
}
}