[oc学习笔记]数组的遍历和排序

 1         //数组的遍历(可变数组举例)
 2         //for遍历
 3         NSMutableArray *aa = [NSMutableArray array];
 4         [aa addObjectsFromArray:@[@"ss",@"ddd",@"sad"]];
 5         for (int i = 0;  i < aa.count; i++) {
 6             NSLog(@"%@",[aa objectAtIndex:i]);
 7         }
 8         //快速遍历
 9         for (id obj in aa) {
10             NSLog(@"%@",obj);
11         }
12         //代码块遍历
13         // obj是对象 idx是下标 stop是停止标志
14         [aa enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
15             NSLog(@"%@",obj);
16             NSLog(@"%@",[aa objectAtIndex:idx]);
17         }];
18         //迭代器遍历
19         //将数组元素存放进迭代器
20         NSEnumerator *en = [aa objectEnumerator];
21         id obj = nil;//创建一个对象接受返回对象
22         while (obj = [en nextObject]) {
23             NSLog(@"%@",obj);
24         }
25         //反向迭代器遍历
26         NSEnumerator *en1 = [aa reverseObjectEnumerator];
27         id obj1 = nil;
28         while (obj1 = [en1 nextObject]) {
29             NSLog(@"%@",obj1);
30         }
31
32
33         //排序(可变数组举例)
34         //可变数组排序的方法无返回值 不可变数组的排序有返回值
35         //选择器排序
36         //compare方法尽限于比较元素是字符时 ,如有另外的比较 请另写比较方法 返回值(NSComparisonResult)
37         [aa sortUsingSelector:@selector(compare:)];
38         //代码块排序
39         //根据实际情况写判断方法
40         [aa sortUsingComparator:^NSComparisonResult(id obj1, id obj2) {
41             return [obj1 compare:obj2];
42         }];
43         //比较描述器排序
44         //对多个条件进行排序比较便利
45         Person *p1 = [[Person alloc]init];
46         p1.name = @"ss";
47         p1.age = @"16";
48
49         Person *p2 = [[Person alloc]init];
50         p2.name = @"dd";
51         p2.age = @"14";
52
53         Person *p3 = [[Person alloc]init];
54         p3.name = @"hh";
55         p3.age = @"22";
56
57         Person *p4 = [[Person alloc]init];
58         p4.name = @"hh";
59         p4.age = @"19";
60         NSMutableArray *sss = [NSMutableArray arrayWithObjects:p1,p2,p3,p4,nil];
61         NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES];
62         NSSortDescriptor *sort2 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
63         NSArray *s = @[sort1,sort2];
64         [sss sortUsingDescriptors:s];
65         NSLog(@"%@",sss);

person.h

1 #import <Foundation/Foundation.h>
2
3 @interface Person : NSObject
4 @property (nonatomic,strong)NSString *name;
5 @property (nonatomic,strong)NSString *age;
6 @end

person.m

1 #import "Person.h"
2
3 @implementation Person
4 - (NSString *)description
5 {
6     return [NSString stringWithFormat:@"%@ %@", _name,_age];
7 }
8 @end

运行结果分析:

2015-06-01 17:37:55.984 Array[2030:140148] ss
2015-06-01 17:37:55.985 Array[2030:140148] ddd
2015-06-01 17:37:55.985 Array[2030:140148] sad
2015-06-01 17:37:55.986 Array[2030:140148] ss
2015-06-01 17:37:55.986 Array[2030:140148] ddd
2015-06-01 17:37:55.986 Array[2030:140148] sad
2015-06-01 17:37:55.986 Array[2030:140148] ss
2015-06-01 17:37:55.986 Array[2030:140148] ss
2015-06-01 17:37:55.986 Array[2030:140148] ddd
2015-06-01 17:37:55.987 Array[2030:140148] ddd
2015-06-01 17:37:55.987 Array[2030:140148] sad
2015-06-01 17:37:55.987 Array[2030:140148] sad
2015-06-01 17:37:55.992 Array[2030:140148] ss
2015-06-01 17:37:55.992 Array[2030:140148] ddd
2015-06-01 17:37:55.992 Array[2030:140148] sad
2015-06-01 17:37:55.992 Array[2030:140148] sad
2015-06-01 17:37:55.992 Array[2030:140148] ddd
2015-06-01 17:37:55.993 Array[2030:140148] ss
2015-06-01 17:37:55.993 Array[2030:140148] (
    "dd 14",
    "hh 19",
    "hh 22",
    "ss 16"
)
时间: 2024-08-09 21:38:02

[oc学习笔记]数组的遍历和排序的相关文章

黑马程序员-OC学习笔记之Foundation框架NSNumber、NSValue和NSDate

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSNumber 前几篇笔记中,小桥复习了Foundatio框架中的几个类,这三个是OC学习的尾声了. 小桥已经复习过OC数组类NSArray,也说过它只能存放OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的NSNumber就有用了,它能够把基本数据类型包装成OC对象.

黑马程序员-OC学习笔记之Foundatio框架集合类

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.OC数组 OC数组是一个类,它也分不可变数组NSArray和可变数组NSMutableArray. 1?不可变数组的创建 // 创建一个不可变数组,元素为一个OC字符串对象 @"小桥" NSArray *array1 = [NSArray arrayWithObject:@"小桥"]; // 创建一个不可变数组,元素为多个O

JS学习笔记-数组

ECMAScript中没有提供类和接口等的定义,但它却是一门面向对象的语言,由于它能够通过其它 方式实现类似高级语言的面向对象功能,这些内容将在后面的文章中进行一步步的总结.此篇仅对JS中对象作简要说明,重点汇总一些类似于对象的数组的经常用法. 对象 创建 上篇提到创建对象的两种方式: 使用new运算符创建Object var obj = new Object(); 使用字面量方式创建 var   obj = {}; 这里值得注意的是在使用字面量(常量)创建Object时不会调用构造函数. 属性

js学习笔记——数组方法

join() 把数组中所有元素转化为字符串并连接起来,并返回该字符串, var arr=[1,2,3]; var str=arr.join("#"); //str="1#2#3"; 如果没有指定分隔符,则默认为逗号 var str2=arr.join(); //str2="1,2,3"; reverse() 在原数组上把元素的顺序颠倒过来,并返回该数组 var arr=[1,2,3]; arr.reverse(); //arr=[3,2,1];

PHP学习笔记-数组(1)

1-1 数组定义 1.什么是数组? 所谓数组,就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量. 语法如下: <?php //设置某个变量为一个空数组 $arr=array(); ?> 1-2 索引数组初始化 PHP有两种数组:索引数组.关联数组. 索引和关联两个词都是针对数组的键而言的. 索引数组是指数组的键是整数的数组

黑马程序员-OC学习笔记之block

过山车 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 9426    Accepted Submission(s): 4151 Problem Description RPG girls今天和大家一起去游乐场玩,终于可以坐上梦寐以求的过山车了.可是,过山车的每一排只有两个座位,而且还有条不成文的规矩,就是每个女生必须找个个男生做par

黑马程序员-OC学习笔记之ARC

---------------------- IOS开发.Android培训.期待与您交流! ----------------------一.什么是ARC        ARC是自动引用计数,苹果官方在Xcode4.2及以后版本中加入的一个内存管理机制,完全取代了程序员人工的内存管理,使得程序员只须关心程序本身.使用ARC,编译器会自动在代码中加入内存管理代码,是一个编译器特性,而不是运行时特性,当然,它也和JAVA的垃圾回收不同,它的本质和手动的内存管理是一样的,只是这些代码编译器会自动添加.

黑马程序员-OC学习笔记之NSString与NSMutableString

---------------------- IOS开发.Android培训.期待与您交流! ---------------------- 一.NSString与NSMutableString 相信大家对NSString类都不陌生,它是OC中提供的字符串类,它的对象中的字符串都是不可变的,而它的子类NSMutableString类的对象中的字符串就是可变的.什么是可变与不可变呢?二者的区别就是在已经创建的一个字符串对象中,在程序中能不能更改字符串,比如拼接新的字符串,可变的可以在原字符串中更改,

黑马程序员——OC学习笔记—— Copy

黑马程序员——OC学习笔记—— Copy ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- copy 即对象拷贝 要使用对象数据而不希望修改对象时,可以使用copy copy叫做浅拷贝  mutablecopy深拷贝 copy需要遵守NSCopying协议,实现CopywithZone方法 MutableCopy也一样要遵守相应协议 注意: OC中copy复制的对象都是不可变的  mutablecopy复制的是可变副本 浅拷贝:只拷贝地址,不