如何获取对象列表中的最大值?我想对比一下案件编号
print(_abcBloc.vpStream.value);
_abcBloc.vpStream.value
.sort((a, b) => a['caseNumber'].compareTo(b['caseNumber']));
print(_abcBloc.vpStream.value.last['caseNumber']);
错误
[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type '(dynamic, dynamic) => dynamic' is not a subtype of type '(ABC, ABC) => int' of 'compare'
这是_abcBloc.vpStream.value
输出:
[ABC(priority: null,caseNumber: 1,....), ABC(priority: null, caseNumber:2,...)]
4条答案
按热度按时间zujrkrfu1#
我还想补充一点,如果你只想找到最大的值,你不需要
sort
Map。您可以使用reduce
方法来迭代列表中的每个值,并确定要在迭代中保留的值:2ekbmq322#
你可以使用数学库和reduce来检查最大值
xytpbqjk3#
如注解中所述,只需将lambda中的参数类型写成
(ABC a, ABC b)
,以告知Dart编译器lambda的类型。如果没有这些类型,Dart编译器会假设它们是dynamic
,这就引发了您面临的问题。编辑:正如其他答案所指出的,你不应该使用
sort
调用,因为它的效率(O(nlogn))比它需要的(O(n))低。因此,虽然我所说的工作,它会更好地使用减少调用。eqfvzcg84#
在此示例中,CustomObject类具有名为value的int属性。reduce函数用于对象列表,比较每个对象的值属性,并找到具有最大值的对象。生成的对象存储在maxObject变量中,并打印其值。
请注意,此示例假定列表不为空。如有必要,应添加其他检查以处理空列表。