dart 在flutter中获取具有最高值的Map的List的元素

0lvr5msh  于 11个月前  发布在  Flutter
关注(0)|答案(3)|浏览(100)

我有一个具有此结构的Map列表字段。我想获得具有最高金额的Map在这种情况下第三个Map{金额:400名称:“乔”id:“3df”},
出价:[ {金额:200姓名:“James”id:“1df”},{金额:300姓名:“Joseph”id:“2df”},{金额:400姓名:“Joe”id:“3df”},]

4sup72z8

4sup72z81#

List<Map<String, dynamic>> map= [ { 'amount': 200, 'name': "James", 'id': "1df" }, { 'amount': 300, 'name': "Joseph", 'id': "2df" }, { 'amount': 400 ,'name': "Joe" ,'id': "3df" }, ];
  map.sort((a, b) => b['amount'].compareTo(a['amount']));
  print(map[0]);

字符串
如果您不想打乱您原始Map顺序,请创建一个临时Map并对其进行排序以获得您所需的元素。

6fe3ivhb

6fe3ivhb2#

保持列表顺序

List<Map<String, dynamic>> bids= [ { 'amount': 200, 'name': "James", 'id': "1df" }, { 'amount': 300, 'name': "Joseph", 'id': "2df" }, { 'amount': 400 ,'name': "Joe" ,'id': "3df" }, ];

if (bids.isNotEmpty) {
var max = bids[0];
bids.forEach((item) {
if (item['amount'] > max['amount']) max = item;
});
print(max['amount']);
print(bids);
}

字符串

输出


的数据

vmdwslir

vmdwslir3#

根据这个猜测What is the algorithm used in sort method in dart?,Dart List.sort的时间复杂度为O(nLog(n))
你可以用O(N)的时间复杂度(更快)和恒定的内存复杂度来实现这一点,而不需要改变你的初始列表,如下所示:

void main() {
    double maxBid = getMaxBid([
      {'amount': 200, 'name': "James", 'id': "1df"},
      {'amount': 300, 'name': "Joseph", 'id': "2df"},
      {'amount': 400, 'name': "Joe", 'id': "3df"},
    ]);
    print("Max Bid is $maxBid");
  }

  double getMaxBid(List<Map<String, dynamic>> bids) {
    double maxBid = -double.infinity; // or zero depending on your bid range
    for (var bid in bids) {
      double bidAmount = bid["amount"];
      if (bidAmount <= maxBid) continue;
      maxBid = bidAmount;
    }
    return maxBid;
  }

字符串

相关问题