我有一个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);
根据您的密钥类型和用例,还可以传递compareisValidKey参数。完整的构造函数定义:
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/

10-09 03:23