我需要一个可以存储 100 个键值对的 Map。
如果在添加新对时,对的数量超过 100,我希望删除最旧的对并添加最新的对。
Queue
。
这是当前地图,
Map<String, String> r = {
rId: DateTime.now().toString() // Id is key, created time is value
}
LinkedHashMap
。我研究了@croxx5f 解决方案,发现它不必要地有点复杂
这是一个可以满足您需要的简化版本:
final _optimizedMap = <int, String>{};
final items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
final entries = items.map((e) => MapEntry(e, "item $e"));
for (final e in entries) {
_optimizedMap.remove(e.key); // removing so that items are inserted lastly, indicating that it has been used.
_optimizedMap[e.key] = e.value;
}
final excess = _optimizedMap.length - 300; // <-- change to max length.
if (excess > 0) {
final excessKeys = _optimizedMap.keys.take(excess).toList();
for (final k in excessKeys) {
_optimizedMap.remove(k);
}
}