#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//1、字典元素是以key : value存储的。
//2、字典中的元素存放是无序的。
//3、字典中存取值通过key值。
//4、字典中的key值不允许重复,但是value值是可以重复的。
//5、字典有可变和不可变之分。
//注意:如果,一旦key值有重复的,会自动放弃后面重复的,只保留遇到的第一个key-value对。
NSArray *arrayName=@[@"zhouyi",@"bella",@"jinke"];
NSArray *arrayKey=@[@"name1",@"name2",@"name3"];
NSDictionary *dic1=[[NSDictionary alloc]initWithObjects:arrayName forKeys:arrayKey];
NSDictionary *dic2=[[NSDictionary alloc]initWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2",arrayName,@"key3",dic1,@"key4",nil];
NSString *obj1=[dic1 objectForKey:@"key1"];
//字面量 @{ } @[]
NSDictionary *dic3=@{@"key1": @"value1",@"key2":@"value2",@"key3":@"value3"};
//字典个数
[dic3 count];
//获取key值
[dic3 allKeys];
//获取所有的value值
NSLog(@"%@",[dic3 allValues]);
//获取一个key所对应的所有的value值
NSLog(@"%@",[dic3 allKeysForObject:@"key1"]);
//通过key值取对应的value值--法一
[dic3 valueForKey:@"key2"];
//法二
NSLog(@"%@",dic3[@"key3"]);
//
NSDictionary *dic4=[[NSDictionary alloc]initWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2",arrayName,@"key3",dic1,@"key4",nil];
//返回的是数组 接收方式一
[dic4 objectForKey:@"key3"];
// 接收方式二
NSLog(@"key4==%@",dic4[@"key4"]);
//value的类型是什么就得用什么类型的变量来接收
#pragma mark -------可变字典----------
//便利构造器创建空的可变字典
NSMutableDictionary *NSMdic1=[NSMutableDictionary dictionary];
//添加key : value
[NSMdic1 setObject:@"value1" forKey:@"key1"];
[NSMdic1 setObject:@"xuxian" forKey:@"bainiangzi"];
[NSMdic1 setObject:dic1 forKey:@"zidian 1"];
[NSMdic1 setObject:arrayName forKey:@"shuzu 2"];
//对数--当前容量
NSLog(@"%lu",[NSMdic1 count]);
//
NSLog(@"%@",[NSMdic1 allKeys]);
//
NSLog(@"%@",[NSMdic1 allValues]);
//删除
[NSMdic1 removeObjectForKey:@"key1"];
[NSMdic1 removeObjectForKey:@"zidian 1"];
//添加-----有则改之无则加勉。
[NSMdic1 setObject:@"qingtianzhu" forKey:@"nb"];
//修改-
[NSMdic1 setObject:@"ningxia" forKey:@"nb"];
//遍历字典---先把key转换成数组
NSArray *arrayNSMdic1=[NSMdic1 allKeys];
for (int i=0; i<[arrayNSMdic1 count]; i++) {
//NSMdic1[arrayNSMdic1[i]]
NSLog(@"%@",[NSMdic1 objectForKey:arrayNSMdic1[i]]);
}
[NSMdic1 removeAllObjects];
NSMutableDictionary *NSMdic2=[NSMutableDictionary dictionaryWithCapacity:0];
[NSMdic2 setObject:dic1 forKey:@"dic2"];
[NSMdic2 setObject:@"12" forKey:@"dic22"];
#pragma mark ---- 集合 --------
//存储的元素互不相同
//存储的元素是无序
//存储元素必须是对象类型
// NSSet NSMutableSet
NSSet *set=[[NSSet alloc]init];
//遇到nil就结束
NSSet *set1=[[NSSet alloc]initWithObjects:@"a",@"b",@"c",nil];
//随机获取一个元素
NSLog(@"%@",[set1 anyObject]);
NSLog(@"%@",[set1 anyObject]);
//判断集合中是否包含某个元素
NSLog(@"%d",[set1 containsObject:@"a"]);
//
NSArray *arraySet =[set1 allObjects];
for (int i=0; i<[arraySet count]; i++) {
NSLog(@"===%@",arraySet[i]);
}
//
NSMutableSet *NSMset=[NSMutableSet set];
//添加元素
[NSMset addObjectsFromArray:arraySet];
//
[NSMset addObject:@"d"];
//
[NSMset removeObject:@"a"];
//添加一个字典作为集合的元素
[NSMset addObject:dic1];
//
NSMutableSet *NSMset1=[NSMutableSet set];
[NSMset1 addObject:NSMset];
//
NSMutableSet *NSMset2=[NSMutableSet setWithArray:arrayName];
//
#pragma mark ----NSCountedSet---------
//计数用的
NSArray *arraycSet=[[NSArray alloc]initWithObjects:@"q",@"w",@"q", nil];
NSCountedSet *cSet=[NSCountedSet set];
[cSet addObjectsFromArray:arraycSet];
NSUInteger i=[cSet countForObject:@"q"];
//给一个随机数组,判断数组中重复出现的数字
NSMutableArray *nsmArray=[NSMutableArray array];
for (int i=0; i<10; i++) {
NSNumber *nsNum=[[NSNumber alloc]initWithInt:(arc4random()%(10-1+1)+1) ];
[nsmArray addObject:nsNum];
}
NSCountedSet *cSetArray=[[NSCountedSet alloc]initWithArray:nsmArray];
for (int i=0; i<[cSetArray count]; i++) {
NSCountedSet *cSetArray=[[NSCountedSet alloc]initWithArray:nsmArray];
NSUInteger count=[cSetArray countForObject:nsmArray[i]];
NSLog(@"%@的次数%lu",nsmArray[i],count);
if (count>1) {
NSNumber *temp=nsmArray[i];
[nsmArray removeObject:nsmArray[i]];
[nsmArray addObject:temp];
i--;
NSLog(@"移除重复的数后:%@",nsmArray);
}
}
NSLog(@"删除重复的对象后:%@",nsmArray);
//
#pragma mark --- 快速遍历 ---------
NSArray *arr1=@[@"1",@"3",@"12",@"11"];
NSLog(@"%@",arr1);
for (int i=0; i<[arr1 count]; i++) {
NSLog(@"%@",arr1[i]);
}
NSLog(@"用快速枚举器快速打印数组");
for (NSString *obj in arr1) {
NSLog(@"%@",obj);
}
NSLog(@"用id类型遍历");
for (id obj in arr1) {
NSLog(@"%@",obj);
}
//
NSLog(@"快速遍历字典");
NSDictionary *dicc1=@{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"};
//快速遍历对于字典来说,每次获取的都是key值
//直接取key value
for (NSString *obj in dicc1) {
NSLog(@"%@,%@",obj,dicc1[obj]);
}
//转换取key 和 value 值
NSLog(@"遍历value");
NSArray *arrValue=[dicc1 allValues];
for (NSString *obj in arrValue) {
NSLog(@"%@",obj);
}
NSLog(@"遍历key");
NSArray *arrKey=[dicc1 allKeys];
for (NSString *obj in arrKey) {
NSLog(@"%@",obj);
}
#pragma mark ------- 枚举器 ------------------
//是一个工具,帮我们从数组中将元素逐个取出。
NSArray *arr2=@[@"1",@"2",@"3",@"4",@"5",@"6"];
//把数组元素装进枚举中
NSEnumerator *enum1=[arr2 objectEnumerator];
id obj;//任意类型,在不知道数组的元素类型的时候
while (obj = [enum1 nextObject]) {
NSLog(@"正在遍历 %@",obj);
}
NSLog(@"遍历结束");
NSDictionary *dict1=@{@"key1":@"value1",@"key2":@"value2",@"key3":@"value3"};
//把字典元素放在枚举中
NSEnumerator *enum2=[dict1 objectEnumerator];
id objdict;
while (objdict = [enum2 nextObject]) {
NSLog(@"正在遍历%@",objdict);
}
//compare跟排序组合,还可以自定义compare
NSArray *array=@[@"1",@"4",@"-9",@"12",@"2",@"56"];
NSLog(@"排序前%@",array);
NSArray *array1=[array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"排序后%@",array1);
NSMutableArray *NSMarray=[NSMutableArray arrayWithObjects:@"f",@"d",@"c",@"b", nil];
NSLog(@"排序前%@",NSMarray);
[NSMarray sortUsingSelector:@selector(compare:)];
NSLog(@"排序后%@",NSMarray);
//练习:
Student *student=[Student studentName:@"yibella" Age:22 Score:98.5];
NSLog(@"%@",student);
Student *aStudent=[[Student alloc]init];
[aStudent setName:@"qingqing" Age:12 Score:88];
[student compareByAge:aStudent];
NSLog(@"年龄比较结果:%d",[student compareByScore:aStudent]);
[student compareByScore:aStudent];
NSLog(@"成绩比较结果:%d",[student compareByScore:aStudent]);
Student *student1=[Student studentName:@"xing" Age:19 Score:89];
NSMutableArray *arrayStudent=[NSMutableArray array];
[arrayStudent addObject:student];
[arrayStudent addObject:aStudent];
[arrayStudent addObject:student1];
//封装了冒泡排序算法
[arrayStudent sortUsingSelector:@selector(compareByAge:)];
NSLog(@"按年龄排序%@",arrayStudent);
[arrayStudent sortUsingSelector:@selector(compareByScore:)];
NSLog(@"按成绩排序%@",arrayStudent);
// [arrayStudent sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if()
// }
}
return 0;
}