Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 如何获取地图中的最后N个元素<;int,动态>;?_Dart - Fatal编程技术网

Dart 如何获取地图中的最后N个元素<;int,动态>;?

Dart 如何获取地图中的最后N个元素<;int,动态>;?,dart,Dart,我目前有一个映射,其中键是插入顺序 比如说 const Map<int, dynamic> log = { 1: {'startDate': 1111, 'endDate': 2222}, 2: {'startDate': 123123, 'endDate': 1231233}, 3: {'startDate': 555555, 'endDate': 5555556}, 4: {'startDate': 888888}, }; 常量映射日志={ 1:{'start

我目前有一个
映射
,其中键是插入顺序

比如说

const Map<int, dynamic> log = {
  1: {'startDate': 1111, 'endDate': 2222},
  2: {'startDate': 123123, 'endDate': 1231233},
  3: {'startDate': 555555, 'endDate': 5555556},
  4: {'startDate': 888888},
};

常量映射日志={
1:{'startDate':1111,'endDate':2222},
2:{'startDate':123123,'endDate':1231233},
3:{'startDate':555555,'endDate':5555556},
4:{'startDate':888888},
};
现在如何获取最后的X金额?

我在想

final Iterable<int> numberOfLogs = log.keys;
final Iterable<int> reversedNumberOfLogs = numberOfLogs.toList().reversed;
final Iterable<int> recent2Logs = reversedNumberOfLogs.take(2);
final Iterable numberOfLogs=log.keys;
final Iterable reversedNumberOfLogs=numberOfLogs.toList().reversed;
最终Iterable recent2Logs=反向日志数。取(2);
然后我可以循环查看
recent2Logs
,然后通过循环索引访问
log
映射

有更好的方法吗?

我能做到

final recent2Logs = log.key.toList().getRange(log.length - 2, log.length));

请注意,
Map
Set
的默认实现分别是
LinkedHashMap
LinkedHashSet
,这两种实现在对它们进行迭代时已经为您保留了插入顺序。利用这一点,您可以使用
Set
(或显式
LinkedHashSet
)并执行以下操作:

log.toList().reversed.take(2)
直接的。如果您仍然需要整数键(因为您可能希望能够有效地删除第n个条目),并且需要继续使用
Map
/
LinkedHashMap
,那么:

log.entries.toList().reversed.take(2)

Woah!这比我想象的要好得多。