NSSet、NSArray的日期排序
很久沒寫iOS程式碼。最近和朋友聊天時候有強迫症,想強烈把程式碼給優化。
問題是這樣的:現在資料是日期陣列,想過濾掉重複的日期,怎麼解決。
原始程式碼
這裡想到更簡潔點。用NSSet來搞定。
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"set%@\n", set);
打印出來的結果
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
{(
"12-11",
"12-14",
"12-13",
"12-12"
)}
朋友看了說不行,這樣列印的結果是無序的,使用者要看有序的結果。
查了一下NSSet的排序,發現有個
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
@interface NSSet (NSSortDescriptorSorting) - (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors NS_AVAILABLE(10_6, 4_0); // returns a new array by sorting the objects of the receiver @end
傳遞的引數是NSSortDescriptor陣列。
因此修改後程式碼如下
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"]; NSSet *set = [NSSet setWithArray:arr]; NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]]; NSArray *sortSetArray = [set sortedArrayUsingDescriptors:sortDesc]; NSLog(@"set%@\nsort set%@", set, sortSetArray);
打印出來結果
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
{(
"12-11",
"12-14",
"12-13",
"12-12"
)}
sort set(
"12-11",
"12-12",
"12-13",
"12-14"
)
發現NSSortDescriptor是專門用來排序的描述符。可以用來排序NSSet,NSDictionary,NSArray。測試一下陣列的使用。程式碼如下
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSArray *sortDesc = @[[[NSSortDescriptor alloc] initWithKey:nil ascending:YES]];
NSArray *sort1Array = [arr sortedArrayUsingDescriptors:sortDesc];
NSLog(@"sort1 array: %@\n",sort1Array);
打印出來
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
sort1 array: (
"12-11",
"12-11",
"12-11",
"12-12",
"12-13",
"12-14"
)
想起來一直用NSArray的排序程式碼
[objc] view plain copy
在CODE上檢視程式碼片派生到我的程式碼片
NSArray *arr = @[@"12-11", @"12-11", @"12-11", @"12-12", @"12-13", @"12-14"];
NSArray *sort2Array = [arr sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 localizedCompare:obj2];
}];
NSLog(@"sort2 array %@", sort2Array);
以上只是示例,具體NSSortDescriptor和array的高階用法,大家可以查文件,可以簡化程式碼。
相關推薦
NSSet、NSArray的日期排序
很久沒寫iOS程式碼。最近和朋友聊天時候有強迫症,想強烈把程式碼給優化。 問題是這樣的:現在資料是日期陣列,想過濾掉重複的日期,怎麼解決。 原始程式碼 這裡想到更簡潔點。用NSSet來搞定。 [objc] view plain copy 在CODE上檢
集合:NSArray、NSMutableArray、NSDictionary、NSMutableDictionary、NSSet、NSMutableSet使用
/*本文介紹了:NSArray(有序的集合,儲存的元素在一個整塊的記憶體中並按序排列)、 NSMutableArray、 NSDictionary(鍵值對映)、 NSMutableDictionary、 NSSet(無序的集
sort-list——鏈表、快慢指針找中間、歸並排序
val 排序。 rtl != spa 判斷 nbsp node ace Sort a linked list in O(n log n) time using constant space complexity. 鏈表,快慢指針找中點,歸並排序。 註意判斷條件fast-
David MacKay:用信息論解釋 '快速排序'、'堆排序' 本質與差異
新的 read aso 這一 recursion 12個 new div 差異 這篇文章是David MacKay利用信息論,來對快排、堆排的本質差異導致的性能差異進行的比較。 信息論是非常強大的,它並不只是一個用來分析理論最優決策的工具。 從信息論的角度來分析算法效率是一
Java 的冒泡排序、直接選擇排序和反轉排序方法
int sys nbsp arr i++ tostring ava ++ arrays 冒泡排序: System.out.println(Arrays.toString(arr)); int temp = -1; for(int i=0;i<arr.length;i+
mui選擇時間、選擇日期
date btn tlist -1 back tap 技術分享 ast reg 完整代碼: <header class="mui-bar mui-bar-nav"> <a class="mui-action-back mui-icon m
【算法拾遺(java描寫敘述)】--- 插入排序(直接插入排序、希爾排序)
ecan itblog insert med image java程序 can rip title 插入排序基本思想 每次將一個待排序的記錄按其keyword大小插入到前面已經拍好序的子文件的適當位置,直到全部記錄插入完畢為止。 直接插入
Python中列表(list)、字典(dict)排序的程序
self. 能夠 網站 軟件 too 字段 tool 生成 ted Python3 中的排序,在 Sorting HOW TO 中已經講得很清楚了。來個實際的例子,對下面的這個 list 依據創建時間排序: pages = [{‘title‘: ‘十年學會程序設計‘, ‘
Android UsageStats:應用根據啟動次數、啟動時間、應用名稱排序
public each eno you when listen iss 技術 internal Android 7.1.1 developers/samples/android/system/AppUsageStatistics/Application/src/main/j
Java8的日期排序
vb6 href doc cor put userinfo uft vga lan k倬航赫60186w巫4shttp://shufang.docin.com/ptyc1214 1XYsa頰40儼c吃http://shequ.docin.com/ecbx2797 3f傅
go語言的排序、結構體排序
sea 封裝 class 讓其 其他 zhang import 過去 blue 原文:https://studygolang.com/articles/1598 晚上準備動手寫點 go 的程序的時候,想起 go 如何排序的問題。排序 sort 是個基本的操作,當然搜索
ORACLE---Unit02: Oracle字符串操作 、 Oracle數值操作 、 Oracle日期操作 、 空值操作
其它 sca 需要 一個 rtrim unit con ava 空字符 ---DQL:數據查詢語句 ---SELECT語句中必須包含至少兩個字句,分別是SELECT字句與FROM字句。 ---SELECT子句用來指定要查詢的字段, ---FROM子句用來定制數據來源的表。
在路上---學習篇(一)Python 數據結構和算法 (4) --希爾排序、歸並排序
改進 randint 循環 打印 中一 隨機 關鍵詞 shel 條件 獨白: 希爾排序是經過優化的插入排序算法,之前所學的排序在空間上都是使用列表本身。而歸並排序是利用增加新的空間,來換取時間復雜度的減少。這倆者理念完全不一樣,註定造成的所消耗的時間不同以及空間上的不同
js獲取某周、某月、下月、某季度的開始日期、結束日期及判斷日期第幾周
weekend return n) nth 結束時間 value rst 獲得 set //格式化日期:yyyy-MM-dd function formatDate(date) { var myyear = date.getFullYear(); v
SQL 操作結果集 -並集、差集、交集、結果集排序
nbsp 分享 字段名 運算 語法 http 測試數據 結構 put 操作結果集 為了配合測試,特地建了兩個表,並且添加了一些測試數據,其中重復記錄為東吳的人物。 表:Person_1魏國人物 表:Person_2蜀國人物 A、Union形成並
java實現排序算法:快排、冒泡排序、選擇排序、插入排序、歸並排序
結果 快速 post ont pla emp string () tro 一、概述:本文主要介紹常見的幾種排序算法的原理以及java實現,包括:冒泡排序、選擇排序、插入排序、快速排序、歸並排序等。 二、冒泡排序: (1)原理: 1、從第一個數據開始,與第二個數據相比較,
Java排序算法分析與實現:快排、冒泡排序、選擇排序、插入排序、歸並排序(二)
第一個元素 spa insert 循環 冒泡排序 author 高級算法 ins -s 一、概述: 上篇博客介紹了常見簡單算法:冒泡排序、選擇排序和插入排序。本文介紹高級排序算法:快速排序和歸並排序。在開始介紹算法之前,首先介紹高級算法所需要的基礎知識:劃分、遞歸,並順
【自考】排序算法-插入、交換、選擇、歸並排序
排序算法 ans ica args sub dex 劃分 data 下標 碎碎念: ? ? ? ? ?記得當初第一年的時候、接觸算法、有那麽兩個視頻、跳舞的、講
JS獲取當前日期、比較日期大小
獲取 mon 當前時間 function format 日期 col log 格式 //獲取當前時間,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperat
JVM學習--(二)內存模型、可見性、指令重排序
兩個 tor 可能 程序 處理器 通過 順序執行 一點 資料 我們將根據JVM的內存模型探索java當中變量的可見性以及不同的java指令在並發時可能發生的指令重排序的情況。 內存模型 首先我們思考一下一個java線程要向另外一個線程進行通信,應該怎麽做,我們再把需