Object-C,NSArraySortTest,陣列排序3種方式
晚上回來,繼續寫Object-C的例子,今天不打算寫iOS視覺化介面的程式,太累了。
剛剛dady又電話過來,老一套,煩死了。
其實,我一直一個觀點,無論發生什麼事情,不要整天一副不開心的樣子。
開開心心過日子,活著就要懂得珍惜。
剛剛寫了陣列排序,有3種方法,使用物件自帶的compare方法、傳入比較函式、匿名函式-程式碼塊。
個人認為,本質是2種方法。
一種是,類似Java中的物件,實現Comparable介面的compareTo方法。
一種是,傳入比較器Comparator,比較靈活。
程式碼
//
// main.m
// NSArraySort
//
// Created by fansunion on 15/12/2.
// Copyright (c) 2015年 demo. All rights reserved.
//
#import <Foundation/Foundation.h>
//需要定義在main函式之前,和C語言一樣,和java不一樣
//比較函式,降序排列
NSComparisonResult intSort(id a,id b,void* context){
int v1 = [a intValue];
int v2 = [b intValue];
if(v1 > v2){
return NSOrderedAscending;
}else if(v1 < v2){
return NSOrderedDescending;
}else{
return NSOrderedSame;
}
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
//字串陣列,使用自帶的compare方法排序。相當於Java中物件實現Comparable介面的compareTo方法
NSArray* strArray = @[@"Java",@"Android",@"Object-C"];
strArray = [strArray sortedArrayUsingSelector:@selector(compare:)];
NSLog(@("%@"),strArray);
//整型陣列,傳入比較函式。相當於Java中傳入Comparator物件,這種方式更加靈活。
NSArray* numberArray =@[[NSNumber numberWithInteger:2015],[NSNumber numberWithInt:1949],[NSNumber numberWithInt:2020]];
numberArray = [numberArray sortedArrayUsingFunction:intSort context:nil];
NSLog(@"%@",numberArray);
//使用程式碼塊比較,進行排序(和第2種方法感覺沒啥區別啊),升序
NSArray* numberArrayAsc =[numberArray sortedArrayUsingComparator:^(id a,id b){
int v1 = [a intValue];
int v2 = [b intValue];
if(v1 > v2){
return NSOrderedDescending;
}else if(v1 < v2){
return NSOrderedAscending;
}else{
return NSOrderedSame;
}
}];
NSLog(@"%@",numberArrayAsc);
}
return 0;
}
程式輸出
2015-12-02 20:39:09.500 NSArraySort[5534:380948] (
Android,
Java,
"Object-C"
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
2020,
2015,
1949
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
1949,
2015,
2020
)
Program ended with exit code: 0
相關文章
- 3種常見的Web前端陣列排序方式!Web前端陣列排序
- Object-C,陣列NSArrayObject陣列
- Object-C陣列和字典Object陣列
- 陣列去重的幾種方式陣列
- 重學前端之(3)陣列、排序前端陣列排序
- Awk 陣列排序多種實現方法陣列排序
- Java集合和陣列的排序方式總結Java陣列排序
- 陣列排序陣列排序
- 陣列的三種初始化方式陣列
- Java陣列初始化三種方式Java陣列
- 遍歷PHP陣列的6種方式PHP陣列
- php合併陣列的幾種方式PHP陣列
- JS陣列隨機排序的三種方法JS陣列隨機排序
- 多維陣列轉一維陣列(降維的多種方式)陣列
- 陣列的排序陣列排序
- 物件陣列排序物件陣列排序
- 樹狀陣列3種基本操作陣列
- 1117清空陣列的多種方式陣列
- 陣列去重的各種方式對比陣列
- 5種方式實現陣列扁平化陣列
- IOS幾種簡單有效的陣列排序方法iOS陣列排序
- 為什麼處理排序陣列比未排序陣列快排序陣列
- Java併發和多執行緒2:3種方式實現陣列求和Java執行緒陣列
- php陣列中常用的多種遍歷方式PHP陣列
- go 陣列傳遞給函式三種方式Go陣列函式
- C#中陣列的三種訪問方式C#陣列
- 多維陣列排序陣列排序
- 陣列氣泡排序陣列排序
- 陣列選擇排序陣列排序
- js陣列排序整理JS陣列排序
- javascript 陣列快速排序JavaScript陣列排序
- 陣列多重排序陣列排序
- c# 陣列排序C#陣列排序
- 陣列二:使用陣列可變函式為陣列排序陣列函式排序
- ***PHP陣列排序+php二維陣列排序方法(PHP比較器)PHP陣列排序
- 記一次陣列操作:陣列 A 根據陣列 B 排序陣列排序
- 陣列排序函式-php陣列函式(一)陣列排序函式PHP
- js宣告陣列的幾種方式簡單介紹JS陣列