//
// main.m
// OC-遍历和排序-homework
//
// Created by dllo on 16/2/25.
// Copyright © 2016年 dllo. All rights reserved.
// #import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 要求 :
// 1、创建1个包含5个字符串元素的数组; 2、 for循环倒序输出所有元素; 3、 for...in完成所有字符串元素的拼接( 成 个
// 新的字符串),并输出拼接好的字符串。
NSArray *strArray = @[@"nanjing", @"shanghai", @"beijing", @"shangxi", @"chongqing"];
for (int i = 0; i < strArray.count; i++) {
NSLog(@"%@", [strArray objectAtIndex:strArray.count - 1 - i]);
}
NSMutableString *str = [NSMutableString stringWithCapacity:20];
for (NSString *string in strArray) {
[str appendString:string];
}
NSLog(@"%@", str); // 要求:
// 1、创建1个包含5个person对象的数组(姓名 英 ); 2、 for循环找到年龄最 的Person对象; 3、 for...in遍历数组,把 于某个年龄的Person对象的姓名后 拼接上字符串“-brother”。 Person *per1 = [[Person alloc]initWithName:@"ma" sex:@"male" age:26];
Person *per2 = [[Person alloc]initWithName:@"liutaifeng" sex:@"male" age:22];
Person *per3 = [[Person alloc]initWithName:@"zhengfeng " sex:@"male" age:23];
Person *per4 = [[Person alloc]initWithName:@"ma" sex:@"male" age:27];
Person *per5 = [[Person alloc]initWithName:@"ma" sex:@"male" age:29];
NSArray *array = [NSArray arrayWithObjects:per1, per2, per3, per4, per5, nil];
Person *per = [[Person alloc]initWithName:@"majian" sex:@"male" age:29];
for (int i = 0; i < array.count; i++) {
if ([[array objectAtIndex:i] age] < [per age]) {
per = [array objectAtIndex:i];
}
}
NSLog(@"%@", [per name]); NSArray *newArray = [array sortedArrayUsingSelector:@selector(compareWithName:)];
NSLog(@"%@", newArray); NSArray *newArray2 = [array sortedArrayUsingSelector:@selector(compareWithSex:)];
NSLog(@"%@", newArray2); NSArray *newArray3 = [array sortedArrayUsingSelector:@selector(compareWithAge:)];
NSLog(@"%@", newArray3); NSSortDescriptor *sortOfName = [[NSSortDescriptor alloc]initWithKey:@"name" ascending:YES]; NSSortDescriptor *sortOfAge = [[NSSortDescriptor alloc]initWithKey:@"age" ascending:YES]; NSArray *array1 = [array sortedArrayUsingDescriptors:@[sortOfName, sortOfAge]];
NSLog(@"%@", array1); }
return 0;
}

Person.m文件:

//
// Person.m
// OC-遍历和排序-homework
//
// Created by dllo on 16/2/25.
// Copyright © 2016年 dllo. All rights reserved.
// #import "Person.h" @implementation Person - (instancetype)initWithName:(NSString *)name sex:(NSString *)sex age:(NSInteger)age{
self = [super init];
if (self) {
_name= name;
_age = age;
_sex = sex;
}
return self; }
- (NSComparisonResult)compareWithName:(Person *)anOtherPerson{ return [self.name compare:anOtherPerson.name]; } - (NSComparisonResult)compareWithAge:(Person *)anOtherPerson{
if (self.age > anOtherPerson.age) {
return NSOrderedDescending;
}else if(self.age < anOtherPerson.age){
return NSOrderedAscending; }else{
return NSOrderedSame;
} }
- (NSComparisonResult)compareWithSex:(Person *)anOtherPerson{
return [self.sex compare:anOtherPerson.sex];
}
- (NSString *)description
{
return [NSString stringWithFormat:@"name:%@, sex:%@, age:%ld", _name, _sex, _age];
}
@end

ios-遍历和排序的更多相关文章

  1. c# Dictionary的遍历和排序

    c# Dictionary的遍历和排序 c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 ...

  2. Object-c学习之路八(NSArray(数组)遍历和排序)

    今天学习了NSArray的遍历和排序,现在在这里做一下总结: 遍历现在实现了四中方法: 排序大概有三中方法:(代码中都有注释) 关于对象的排序还是以Student和Book为例 每个Student持有 ...

  3. jdk8中关于操作集合的一些新特性,遍历和排序操作

    jdk8增加了不少新的东西,在集合操作这块,就有如 lamda表达式,stream,sort,optional等新的类,主要涉及遍历和排序等方面,新特性提升了不少性能,我们开发就是要拥抱新事物,守着老 ...

  4. PCB 合拼遍历(全排序+旋转90度) 基本遍历方法

    分享一下PCB合拼的组合的遍历方法,在分享之前先纠正一下 PCB拼板之多款矩形排样算法实现--学习  时间复杂度计算错误  一.PCB 合拼(全排序+旋转90度)的时间复杂度是多少? 二.合拼遍历(全 ...

  5. java 集合之Arraylist的遍历及排序

    最近培训是先学习java基础 从最基本的开始学起 因为今天刚刚开博客 要把上周的一些重点内容归纳一下 1.Arraylist常用遍历以及排序 import java.util.ArrayList; i ...

  6. c# Dictionary的遍历和排序(转)

    c#遍历的两种方式 for和foreach for: 需要指定首位数据.末尾数据.数据长度: for遍历语句中可以改变数据的值: 遍历规则可以自定义,灵活性较高 foreach: 需要实现ienume ...

  7. [java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

    1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一 ...

  8. [转载]C# HashTable 遍历与排序

    private void Form1_Load(object sender, EventArgs e) { Hashtable ht = new Hashtable(); ht.Add("j ...

  9. C#中hashtable的赋值、取值、遍历、排序操作

    一,哈希表(Hashtable)简述 在.NET Framework中,Hashtable是System.Collections命名空间提供的一个容器,用于处理和表现类似key/value的键值对,其 ...

  10. HashMap的遍历和排序

    1.HashMap的遍历 package com.sheepmu; import java.util.HashMap; import java.util.Iterator; import java.u ...

随机推荐

  1. C++ new(3)

    转载自:http://www.builder.com.cn/2008/0104/696370.shtml “new”是C++的一个关键字,同时也是操作符.关于new的话题非常多,因为它确实比较复杂,也 ...

  2. 解决客户端通过zookeeper连接到hbase时连接过多的问题

    原因:客户端程序通过zookeeper访问hbase的连接数超过设置的默认链接数(默认数是30),连接数不够用会导致后续的连接连接不上去. 解决办法:设置hbase-site.xml配置文件,添加如下 ...

  3. HDU 4286 Data Handler --双端队列

    题意:有一串数字,两个指针,然后一些添加,删除,反转,以及移动操作,最后输出序列. 解法:可以splay做,但是其实双端队列更简便. 维护三个双端队列LE,MI,RI分别表示[L,R]序列左边,[L, ...

  4. 三维网格形变算法(Laplacian-Based Deformation)

    网格上顶点的Laplace坐标(均匀权重)定义为:,其中di为顶点vi的1环邻域顶点数. 网格Laplace坐标可以用矩阵形式表示:△=LV,其中,那么根据网格的Laplace坐标通过求解稀疏线性方程 ...

  5. [转]Rapid Reporter——轻量级ET测试记录工具

    下载地址:http://testing.gershon.info/reporter/ 特别感谢:邰晓梅老师 在一次ET的在线培训课程,邰晓梅老师使用的是这个工具. Rapid Reproter,是一款 ...

  6. 【Java基础】java 获得本日,本周,本月的时间戳区间

    如果涉及到统计的话,可能会经常用到.很简单的基础知识. 1.getTimestampByOffsetDay public static long getTimestampByOffsetDay(int ...

  7. RecyclerView (一) 基础知识

    RecyclerView是什么? RecyclerView是一种新的视图组,目标是为任何基于适配器的视图提供相似的渲染方式.它被作为ListView和GridView控件的继承者,在最新的suppor ...

  8. jq 操作table

    转载于:http://www.jb51.net/article/34633.htm jquery获取table中的某行全部td的内容方法,需要的朋友可以参考一下   <table>< ...

  9. Android 中调试手段 打印函数调用栈信息

    下面来简单介绍下 android 中的一种调试方法. 在 android 的 app 开发与调试中,经常需要用到打 Log 的方式来查看函数调用点. 这里介绍一种方法来打印当前栈中的函数调用关系 St ...

  10. Linux 进程通信(无名管道)

    无名管道 无名管道是半双工的,就是对于一个管道来讲,只能读,或者写. 无名管道只能在相关的,有共同祖先的进程间使用(即一般用户父子进程). 一个fork或者execve调用创建的子进程继承了父进程的文 ...