我有一个Map文字,我希望它是TreeMap,但是默认情况下,我认为它是LinkedHashMap。将LinkedHashMap转换为TreeMap无法使用,因为它不是子类型。
基本上,我正在寻找使这项工作最简单的方法:
var map = <int, int>{for(int i = 0; i < intervals.length; i++) intervals[i][0] : i} as SplayTreeMap;
如前所述,由于其类型不对齐,因此强制转换为SplayTreeMap无效。提前谢谢
最佳答案
使用SplayTreeMap.from
构造函数创建一个 SplayTreeMap
。没有任何方法可以像您所说的那样进行转换。
从当前代码中删除as
,并将其添加以获取SplayTreeMap
:
var newMap = SplayTreeMap.from(map);
根据您的密钥类型和用例,还可以传递compare
和isValidKey
参数。完整的构造函数定义:SplayTreeMap<K, V>.from(
Map other,
[int compare(
K key1,
K key2
),
bool isValidKey(
dynamic potentialKey
)]
)
关于dart - 是否可以通过Map文字创建TreeMap?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63618718/