oc集合
本人之前学习过一年半ios开发 由于行情太过凄惨,故转前端。心在前端,苹果亦难忘!把我平时的笔记作出给大家总结!
NSMutableArray *arrstu=[NSMutableArray arrayWithCapacity:10];
student *stu1=[[student alloc]init];
stu1.name=@"我";
student *stu2=[[student alloc]init];
stu2.name=@"少";
student *stu3=[[student alloc]init];
stu3.name=@"帅";
[arrstu addObject:stu1];
[arrstu addObject:stu2];
[arrstu addObject:stu3];
[arrstu insertObject:@"兵" atIndex:2];//插入
[arrstu removeObjectAtIndex:3];//删除
int count ;
[arrstu replaceObjectAtIndex:2 withObject:@"youxi"];//替换
for(id obj in arrstu)
{
NSLog(@"数组对象%d:%@",count,obj);
count++;
}
1.编写程序,以数组存储字符串”元芳”、”华生”、”平次”,并用循环语句输出数组中存储的所有字符串。
尝试使用可变数组版本进行程序扩展,可以存放不定项个字符串。
NSArray *array = [NSArray arrayWithObjects:@"元芳", @"华生", @"平次", nil];
//使用普通循环遍历数组
NSLog(@"使用普通循环遍历数组:");
for (int i=0; i<[array count]; i++) {
NSLog(@"%@",[array objectAtIndex:i]);
}
//使用枚举器遍历数组
NSLog(@"使用枚举器遍历数组:");
NSEnumerator *objEnumerator = [array objectEnumerator];
id obj = NULL;
while (obj = [objEnumerator nextObject]) {
NSLog(@"%@",obj);
}
//使用快速枚举遍历数组
NSLog(@"使用快速枚举遍历数组:");
for (id obj in array) {
NSLog(@"%@",obj);
}
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:3];
//可变数组中存放元素个数并不受arrayWithCapacity参数值限制,那只是一个最优值
[mArray addObject:@"元芳"];
[mArray addObject:@"华生"];
[mArray addObject:@"平次"];
[mArray addObject:@"何瑾"];
[mArray addObject:@"习禁苹"];
//使用快速枚举遍历可变数组
NSLog(@"使用快速枚举遍历可变数组:");
for (id obj in mArray) {
NSLog(@"%@",obj);
}
2.编写程序,以可变数组存储1到10之间的不重复的随机整数,再对这个数组进行从小到大排序,最后用循环语句输出所有值。
@autoreleasepool {
NSMutableArray *mArray = [NSMutableArray arrayWithCapacity:10];
NSNumber *number = nil;
int i = 0,j = 0,tmp = 0,value[10] = {0};
BOOL repeat = NO;
//获取1到10之间的不重复的随机整数放入value[10]数组中
for (i=0; i<<span class="s3">10; i++) {
repeat = NO;
tmp = (arc4random() % 10) + 1;//获取1到10之间的随机整数
//以下算法确保生成的随机数不重复
for (j=0; j
if (tmp == value[j]) {
repeat = YES;//重复了
break;
}
}
if (repeat) {
i -= 1;
} else {
value[i] = tmp;
}
}
//装箱1到10之间的随机整数
for (i=0; i<<span class="s3">10; i++) {
number = [NSNumber numberWithInt:value[i]];//装箱1到10之间的随机整数
[mArray addObject:number];//放入可变数组中
}
NSLog(@"排序前:");
for (NSNumber *number in mArray) {
NSLog(@"%d",[number intValue]);
}
[mArray sortUsingSelector:@selector(compare:)];//排序(NSNumber继承NSObject ,可以使用比较compare: isEqual等消息)
NSLog(@"排序后:");
for (NSNumber *number in mArray) {
NSLog(@"%d",[number intValue]);
}
}
5.放四个十进制三位数到一个数组中,然后按从小到大排序后组成一个新的数组
3.编写一个学生类,要求学生类有特征:姓名,年龄,性别,学号,成绩,然后分别根据姓名,年龄,成绩进行排序
//编写一个学生类,要求学生类有特征:姓名,年龄,性别,学号,成绩,然后分别根据姓名,年龄,成绩进行排序
Student * stu_one = [[Student alloc]init];
stu_one.name = @"唐僧";
stu_one.age = 25;
stu_one.score = 100;
stu_one.stuID = 1;
Student * stu_two = [[Student alloc]init];
stu_two.name = @"孙悟空";
stu_two.age = 30;
stu_two.score = 95;
stu_two.stuID = 2;
Student * stu_three = [[Student alloc]init];
stu_three.name = @"孙悟空";
stu_three.age = 35;
stu_three.score = 90;
stu_three.stuID = 3;
NSArray * stuArray = [[NSArray alloc]initWithObjects:stu_one,stu_two,stu_three, nil];
//使用不同的排序方式只需要修改关键字
NSSortDescriptor * sd_stu = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
NSArray * sdArray = [NSArray arrayWithObject:sd_stu];
NSArray * stuArray_last = [stuArray sortedArrayUsingDescriptors:sdArray];
for(id obj in stuArr)
{
NSLog(@"%@",obj);
}
/////////////////////////////////////////////////////////////////////////////////////
@interface Student : NSObject
@property NSString * name;
@property int age;
@property NSString * sex;
@property int stuID;
@property int score;
@end
#import "Student.h"
@implementation Student
-(NSString *)description
{
NSString *string=[NSString stringWithFormat:@"大家好我叫%@,今年%d岁了,性别%@,学号:%d,成绩:%d",_name,_age,_sex,_num,_score];
return string;
}
@end
4.使用可变数组编写一个学生管理系统,可以任意添加,删除,修改 学生的姓名
使用控制台输入数字决定当前要执行的操作,如 1、添加学生姓名 2、删除学生姓名、3.修改学生姓名
int count;
NSMutableArray *arrstu=[NSMutableArray arrayWithCapacity:10];
Student *stu1=[[Student alloc]init];
stu1.name=@"少";
Student *stu2=[[Student alloc]init];
stu2.name=@"帅";
Student *stu3=[[Student alloc]init];
stu3.name=@"我";
[arrstu addObject:stu1];
[arrstu addObject:stu2];
[arrstu addObject:stu3];
int a;
printf("请输入,你需要的内容:1、添加学生姓名 2、删除学生姓名、3.修改学生姓名");
scanf("%d",&a);
switch (a) {
case 1:
[arrstu insertObject:@"兵" atIndex:2];
break;
case 2:
[arrstu removeObjectAtIndex:1];//删除
break;
case 3:
[arrstu replaceObjectAtIndex:2 withObject:@"youxi"];//替换
break;
default:
break;
}
for(id obj in arrstu)
{
NSLog(@"数组对象%d:%@",count,obj);
count++;
}
2.
NSString *str1=@"123-456-789-000";
NSArray *newArray=[str1 componentsSeparatedByString:@"-"];
NSLog(@"%@",newArray);
NSMutableString *newStr=[NSMutableString stringWithCapacity:10];
for (NSString *s in newArray)// s是指向元素
{
[newStr appendString:s];
}
NSLog(@"newStr =%@",newStr);
字典:
//用NSDictionary方法
NSDictionary *dic=[[NSDictionary alloc] initWithObjectsAndKeys:@"元芳",@"狄仁杰",@"展昭",@"包拯",@"毛利",@"柯南",nil];
for (NSString *key in [dic allKeys]) {
NSString *value=[dic valueForKey:key];
NSLog(@"%@问%@这事你怎么看",key,value);
}
//用NSMutableDictionary方法
NSMutableDictionary *zidian=[[NSMutableDictionary alloc]init];
detective *det1=[[detective alloc]init];
det1.name=@"元芳";
detective *det2=[[detective alloc]init];
det2.name=@"展昭";
detective *det3=[[detective alloc]init];
det3.name=@"毛利";
[zidian setObject:det1 forKey:@"狄仁杰"];
[zidian setObject:det2 forKey:@"包拯"];
[zidian setObject:det3 forKey:@"柯南"];
for (NSString *key in [zidian allKeys]) {
NSString *value=[zidian valueForKey:key];
NSLog(@"%@问%@这事你怎么看!",key,value);
}
int num1=333;
int num2=231;
int num3=158;
int num4=998;
NSMutableArray *arr1=[NSMutableArray arrayWithCapacity:5];
NSNumber *num_1 =[NSNumber numberWithInt:num1];
NSNumber *num_2 =[NSNumber numberWithInt:num2];
NSNumber *num_3 =[NSNumber numberWithInt:num3];
NSNumber *num_4 =[NSNumber numberWithInt:num4];
[arr1 addObject: num_1];
[arr1 addObject: num_2];
[arr1 addObject: num_3];
[arr1 addObject: num_4];
[arr1 sortUsingSelector:@selector(compare:)];
for (id obj in arr1) {
NSLog(@"%@",obj);
}
//取出符串“123-456-789-000”中的数字部分,组成一个新的字符串输出,(提示:可变字符串;返回数组)
NSString *str1=@"123-456-789-000";
NSArray *newArray=[str1 componentsSeparatedByString:@"-"];
NSLog(@"%@",newArray);
NSMutableString *newStr=[NSMutableString stringWithCapacity:10];
for (NSString *s in newArray)// s是指向元素
{
[newStr appendString:s];
}
NSLog(@"newStr =%@",newStr);
字典讲解:
///////////////////////////////////////////////////////////////////////////////////////
#import
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student * stu_1 = [[Student alloc]init];
Student * stu_2 = [[Student alloc]init];
Student * stu_3 = [[Student alloc]init];
Student * stu_4 = [[Student alloc]init];
//使用不可变字典时,必须在创建时指定字典内元素
//注意:作为字典的关键字必须要遵循NSCopying协议
//字典内元素必须成对出现,元素个数永远只有偶数个
//字典中对象的关键字必须唯一
//不可变字典一经创建不可修改
//遍历字典时一定要注意遍历出来的元素顺序
NSDictionary * stuDic = [NSDictionary dictionaryWithObjectsAndKeys:stu_1,@"stu1",stu_2,@"stu2",stu_3,@"stu3",stu_4,@"stu4", nil];
NSLog(@"stuDic = %@",[stuDic objectForKey:@"stu3"]);
NSMutableDictionary * mutDic = [[NSMutableDictionary alloc]init];
//为可变字典添加元素
[mutDic setObject:stu_1 forKey:@"stu1"];
[mutDic setObject:stu_2 forKey:@"stu2"];
NSLog(@"mutDic = %@",mutDic);
//删除可变字典指定元素
[mutDic removeObjectForKey:@"stu1"];
[mutDic setObject:stu_3 forKey:@"stu1"];
[mutDic setDictionary:stuDic];
NSLog(@"mutDic = %@",mutDic);
//集合的特点,元素无序
//元素唯一
//(自学NSMutbaleSet)
//NSNumber 是对C语言中数据类型的封装,可以将c数据类型转换为OC的对象,以方便存放到数组等集合当中
//数据一旦进行转换后,将不再支持算数运算,因为变成了对象
//注意明确转换前后的数据类型对应
int num1 = 65;
int num2 = 20;
NSNumber * intNum = [NSNumber numberWithInt:num1];
NSNumber * intNum2 = [NSNumber numberWithInt:num2];
int tmpint = [intNum intValue];
NSLog(@"%d",tmpint);
NSLog(@"%@",intNum);
//NSValue
NSRect rect = NSMakeRect(0, 0, 320, 480);
NSValue * rectValue = [NSValue valueWithBytes:&rect objCType:@encode(NSRect)];
NSSize size = NSMakeSize(20, 20);
NSValue * sizeValue = [NSValue valueWithSize:size];
NSLog(@"rectValue = %@",rectValue);
NSLog(@"sizeValue = %@",sizeValue);
//使用getValue取值时,参数是要存放值得变量
NSSize tmpsize;
[sizeValue getValue:&tmpsize];
NSLog(@"%f",tmpsize.width);
//(自学NSNull)
//创建空对象,主要用途,数组占位
}
return 0;
}
////////////////////////////////////////////////////////////////////////////////////////
#import
@interface Student : NSObject
@end
///////////////////////////////////////////////////////////////////////////////////////
#import "Student.h"
@implementation Student
@end
///////////////////////////////////////////////////////////////////////////////////////
oc集合的更多相关文章
- iOS学习15之OC集合
1.数组类 1> 回顾C语言数组 数组是一个有序的集合, 来存储相同数据类型的元素. 通过下标访问数组中的元素,下标从 0 开始. 2> 数组 数组是一个有序的集合,OC中的数组只能存储对 ...
- iOS学习16之OC集合遍历和数组排序
1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...
- 常用基础OC 集合
// 2016年07月19日17:50:53 集合 //七.NSSet 集合对象(容器类,) // 1. 使用类方法创建对象 NSSet *set1 = [NSSet set]; // ...
- OC学习13——Foundation框架中的集合
OC集合类是一些非常有用的工具类,它可以用于存储多个数量不等的对象,并可以实现常用的数据结构(栈.队列等),此外,OC集合还可用于保存具有映射关系的关联数组.OC的集合大致可以分为:NSArray.N ...
- swift - 字典和集合
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Menlo; color: #4dbf56 } p.p2 { margin: 0.0px 0. ...
- iOS - nil null Nil笔记
今天查看Nullability and Objective-C发现里面提到了nil和Null等关键字,做一下笔记. nil -> Null-Pointer to Objective-C O ...
- Objective-C程序结构及语法特点
程序文件分为头文件(.h)和实现文件(.m): 使用#import关键字将所需的头文件导入程序,并且可以避免程序重复引用相同的头文件: @autoreleasepool { … } 自动释放池: 符号 ...
- OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法
字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 ...
- OC: 数组、集合、字典
数组.字典.集合 参考1 参考2 参考3 参考4 参考5 NSArray * nn = @[@"元素1",@"元素2",@"元素3&quo ...
随机推荐
- js闭包演示
有个网友问了个问题,如下的html,为什么每次输出都是5 <html > <head> <meta http-equiv="Content-Type" ...
- 获取设备UDID、IMEI、ICCID、序列号、Mac地址等信息
在iOS7之前, 可以方便的使用 [[UIDevice currentDevice] uniqueIdentifier] 来获取设备的UDID,但是在iOS7之后这个方法不再适用. 你可以用[[UID ...
- Ubuntu install codeblocks by ppa
sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo apt-get install ...
- libCURL开源库在VS2010环境下编译安装,配置详解
libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 http://blog.csdn.net/su ...
- 关于The C compiler "arm-none-eabi-gcc" is not able to compile a simple test program. 的错误自省...
在 GCC ARM Embedded https://launchpad.net/gcc-arm-embedded/ 上面下载了个arm-none-eabi-gcc 用cmake 编译时 #指定C交叉 ...
- normalize.css入门和下载
CSS Reset 是革命党,CSS Reset 里最激进那一派提倡不管你小子有用没用,通通给我脱了那身衣服,凭什么你 body 出生就穿一圈 margin,凭什么你姓 h 的比别人吃得胖,凭什么你 ...
- MYSQL 5.0 USING BTREE 错误
今天遇到个错误,导入数据库的时候报错,最后发现是php版本的问题导致包含 KEY `uniacid` (`uniacid`) USING BTREE 的SQL命令报错 5.1之前的写法: KEY `u ...
- Zybo GPIO Demo Run Embedded Linux
1.Environment Ubuntu 12.04 x86_64 Vivado 2013.4 SDK 2013.4 2.Pre-requisites 2.1 CodeSourcery arm-g ...
- mysql自动加入添加时间列
`addtime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
- jquery 中的框架
DWZ 国产Ajax RIA开源框架 Ninja UI 框架 提供页面插件 angela ui框架 表单布局等 Chico UI 快速页面布局 PrimeUI w2ui 布局 ...