为集合排序的三个方法

// 为集合字符串排序(cmpare:)

// - null :空类型  就是字符型的0;

// - [NSNull null]是对象类型,能够存入集合的数据:为其分配了内存,但其中的值为空(不能被排序否则程序会崩溃);

// - 对非对象类型指针赋空值用null(如C指针)

// 对集合内的字符串排序:调用排序方法后会创建一个新的集合返回

// - sortedArrayUsing...(sort:分类)

NSArray *group = @[@"red", @"green", @"blue"];

// 1.选择器排序:调用系统的排序方法,即字符串的比较方法

NSArray *reorder_S = [group sortedArrayUsingSelector:@selector(compare:)];

NSLog(@"selector:%@", reorder_S);

// 2.描述排序

// - 提取排序的信息

// > Key:没有key所以使用nil(为自定义对象排序Key就是排序的属性)

// > ascending:布尔类型,YES为升序(ASKII码值)

// - 为方法传递排序的参数

NSSortDescriptor *group_D = [NSSortDescriptor sortDescriptorWithKey:nil ascending:NO];

NSArray *reorder_D = [group sortedArrayUsingDescriptors:@[group_D]];

NSLog(@"descriptor:%@", reorder_D);

// 3.代码块排序:也是调用字符串的比较方法

NSArray *reorder_B = [group sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {return [obj1 compare:obj2];}];

NSLog(@"block:%@",reorder_B);

// - 参数:不会影响排序的顺序

// > SortCurrent:并行排序,即多线程排序,特点:安全性不好

// > SortStable:串行排序,即打单步执行:数据庞大可能效率有点低

// - block的实现,因为是取值两两比较:使用结果仅有三个,根据返回结果就确定大小然后进行返回

reorder_B = [group sortedArrayWithOptions:NSSortStable usingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) { return [obj1 compare:obj2]; }];

NSLog(@"block:%@",reorder_B);

时间: 2024-10-27 09:48:40

为集合排序的三个方法的相关文章

HashTable集合遍历的三种方法

hashtable集合遍历可以根据key,value以及key+value 示例代码: Hashtable table = new Hashtable(); Student stu = new Student(); stu.Name = "李四"; stu.Age = 18; Student stu1 = new Student(); stu1.Name = "张三"; stu1.Age = 18; Student stu2 = new Student(); stu

排序——冒泡排序(三种方法)

冒泡排序的基本思想: 在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒.即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换. 关于程序中4中冒泡排序写法的说明: bubble_sort1:基本的冒泡排序的写法. bubble_sort2:基本冒泡排序的不同写法,基本的冒泡排序是每次遍历,每次缩小范围1,这种办法是每次正向和反向遍历,每次缩小范围2,所以两者的比较次数也是一样的. bubble_sort

对集合排序的三种方式

对集合排序,可能最先想到的是使用OrderBy方法. class Program { static void Main(string[] args) { IEnumerable<Student> result = GetStudents().OrderBy(r => r.Score); foreach (var item in result) { Console.WriteLine(item.Name + "--" + item.Score); } Console.R

[Excel VBA]自定义排序的三种方法

诸君好,前前期我们聊了VBA编程和数据的常规排序……VBA常用小代码105:Rang对象的排序操作……今天我们再聊下自定义排序……何谓自定义排序,就是按指定的顺序对数据源进行排序呗…… 今一共分享了三种方法.第1种方法是系统自带的OrderCustom,优点是代码简洁,缺点是自定义序列有字符长度限制(255个).第2种方法是字典+数组设置序列号,再使用了辅助列进行排序.优点是不会破坏单元格的形式和结构,比如单元格中存在的公式.背景等.第3种方法是只使用字典+数组,借助简单桶排序的技巧,直接对数据

Java中集合排序的两种方法

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * * <p> * ClassName CollectionsSort * </p> * <p> * Description 主要介绍两种集合的排序算法<br/> * 第一:java.util.Collections.sort(jav

list集合排序的两种方法

1. 第一种方式使用 Collections  工具类中的 sort() 方法 顺便介绍Collections工具类的sort()方法: 参数不同: 1 . void sort(List list),按自然排序的升序排序 2. void sort(List list, Comparator c);定制排序,由Comparator控制排序逻辑 public class Test { public static void main(String[] args) { List list1 = new

Java List集合排序的两种方法

1.使用 Collections 工具类中的 sort() 方法 参数不同: void sort(List list) 在自定义类User里面实现Comparable<User>接口,并重写抽象方法compareTo(Student o); void sort(List list, Comparator c) 第二个参数为了省事,可以直接使用匿名内部类 public class User implements Comparable<User>{ private int score;

java集合排序方法sort的使用

转自  http://blog.csdn.net/a1165117473/article/details/6965652 /** To change this template, choose Tools | Templates* and open the template in the editor.*/ package com.city.test; import java.util.Arrays;import java.util.Comparator;/**** @author LiuB*/

最简单的List集合排序方法

将数组按照一定的规则排序最简单的方法就是借助Arrays类的sort方法,那么要实现List集合排序的排序最简单的方式又是什么呢?当然是借助Collections类的sort方法,下面以一个例子来说明如何使用该方法实现List集合的排序: 代码一: package com.ghj.packageofvo; public class User { private String name; //姓名 private String birthday;//出生日期 public User(String