Object-C,NSArraySortTest,配列ソートの3方式
夜帰ってきて、Object-Cの例を書き続けて、今日iOSの可視化インタフェースのプログラムを書くつもりはなくて、疲れました.
さっきdadyからまた電話がかかってきて、いつものやり方で、うんざりしました.
実は、私はずっと一つの観点で、どんなことがあっても、一日中楽しくない様子をしないでください.
楽しく暮らして、生きているうちに大切にしなければなりません.
配列ソートを書いたばかりで、オブジェクトが持つcompareメソッド、転送比較関数、匿名関数-コードブロックを使用する3つの方法があります.
個人的には、本質は2つの方法だと思います.
1つは、Javaのオブジェクトのように、Comparableインタフェースを実装するcomparareToメソッドです.
1つは、比較器Comparatorに転送され、比較的柔軟である.
コード#コード#
プログラムしゅつりょく
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
さっきdadyからまた電話がかかってきて、いつものやり方で、うんざりしました.
実は、私はずっと一つの観点で、どんなことがあっても、一日中楽しくない様子をしないでください.
楽しく暮らして、生きているうちに大切にしなければなりません.
配列ソートを書いたばかりで、オブジェクトが持つcompareメソッド、転送比較関数、匿名関数-コードブロックを使用する3つの方法があります.
個人的には、本質は2つの方法だと思います.
1つは、Javaのオブジェクトのように、Comparableインタフェースを実装するcomparareToメソッドです.
1つは、比較器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