数组内对象根据指定属性排序

参考:https://www.jianshu.com/p/732461f2439a

[arr sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

BTItemModel *item1 = (BTItemModel *)obj1;

BTItemModel *item2 = (BTItemModel *)obj2;

return [item1.rank compare:item2.rank];

}];

错误方式,结果是无序的:

[arr sortUsingComparator:^NSComparisonResult(id  _Nonnull obj1, id  _Nonnull obj2) {

BTItemModel *item1 = (BTItemModel *)obj1;

BTItemModel *item2 = (BTItemModel *)obj2;

if (item1.rank >  item2.rank) {

return NSOrderedDescending;

} else {

return NSOrderedAscending;

}

return 0;

}];

规范方式:

NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {

    if ([obj1 integerValue] > [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedDescending;
    }

    if ([obj1 integerValue] < [obj2 integerValue]) {
        return (NSComparisonResult)NSOrderedAscending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];

原文地址:https://www.cnblogs.com/huaida/p/12160806.html

时间: 2024-07-31 10:01:22

数组内对象根据指定属性排序的相关文章

js 对象数组根据对象中的属性排序

function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = object1[propertyName]; var value2 = object2[propertyName]; if(value1 < value2){ return -1; }else if(value1 > value2){ return 1; }else{ return 0; } }; };

待字闺中之正数数组内和为指定数字的总数

求正数数组内和为指定数字的合并总数 比如[5, 5, 10, 2, 3] 合并值为 15 : 有4种 : (5 + 10, 5 + 10, 5 + 5 + 2 + 3, 10 + 2 + 3) 分析:有的时候,一个题目不能够立刻想到比较优化的想法,就可以先找到一个解决方案,然后根据方案的不足进行优化.而且这个时候,逆转一下思路,便会柳暗花明.由递归到动态规划,不就是如此么? 我们设定f(index,sum)表示数组从index开始到结束组成的sum的总数.那么,f(index, sum)可以表示

泛型集合排序,根据实体类对象的某个属性排序

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; import sy.model.aite.analysis.SelfTestAnalysis; /** * 泛

对数组对象按某些属性排序方法

要排序的对象是一个联系人类,如下定义: @interface Person : NSObject @property (nonatomic, copy) NSString *name; @property (nonatomic, copy) NSString *surname; @property (nonatomic, strong) NSDate *dateOfBirth; @end 而数组中包含如下内容: Smith John 03/01/1984 Andersen Jane 16/03/

数组的创建/查找数组里面的内容/添加数组中元素/使用指定的字符串把数组链接起来/判断数组内是否有指定的数组元素/四种遍历进行输出数组中的元素有哪些

#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { //创建数组 //1.快速创建数组@[] NSArray*[email protected][@"month",@"tue",@" wed",@"fir"]; //2,创建空的数组 NSArray*arr=[[NSArray a

利用Apache的commons-beanutils和commons-collections包实现Java对象的按属性排序

在日常工作中经常用到需要对java对象集合或者Map集合中的某个属性做排序,这个需求可以利用Apache的commons-beanutils和commons-collections包来实现,主要实现方式如下: public static <T> void sort(List<T> list, String property, boolean asc) { Comparator<?> comparator = ComparableComparator.getInstanc

手把手教你如何用java8新特性将List中按指定属性排序,过滤重复数据

在java中常常会遇到这样一个问题,在实际应用中,总会碰到对List排序并过滤重复的问题,如果List中放的只是简单的String类型过滤so easy,但是实际应用中并不会这么easy,往往List中放的是一个类,类中有多个属性,要过滤重复数据,而且这个重复数据要按自己指定的属性过滤,但是要想按照其它属性排序顺序过滤,所以要先排序一下,然后按照某个属性过滤. 实体类如下所示,大家只要创建下面的实体类,无需继承父类,大家不会注解式风格的话,请自行加上getter/setter方法. 首先看看gr

js先后对某个js对象内的两个属性排序

需求 列表中先根据某id进行排序,然后id相同的再按某属性进行排序.最终显示效果如图所示: 实现代码 var data.items = [ {'brand_id':1,'farm_id':2}, {'brand_id':1,'farm_id':3}, {'brand_id':2,'farm_id':4} ] function multisort(array, ...compairers) { return array.sort((a, b) => { for (const c of compai

JAVA list 根据对象的某个属性排序

//需要排序的list List<T> list= new ArrayList<>(); //开始排序 Collections.sort(list, new Comparator<T>(){ public int compare(T o1, T o2) { //排序属性 if(o1.getNum() < o2.getNum()){ return 1; } if(o1.getNum() == o2.getNum()){ return 0; } return -1;