使用sort函数时,我创建的已实现节点似乎会导致一些问题。
我已将其跟踪到MergeSort的Merge函数中节点的比较。话虽如此,有问题的代码行是:
if (_tmpArray[i] <= _tmpArray[j])
_tmpArray在构造函数中定义,但在合并中给出了内容值
operator ==
,operator <
,operator <=
的节点实施如下。
bool operator ==( Node<T> other) => identical(this, other);
bool operator <( Node<T> other){
//other is of same type, T.
if (_value.compareTo(other) == -1){
return true;
}
return false;
}
bool operator <= ( Node<T> other){
return (this == other) || (this < other);
}
似乎我的实施可能是错误的。我正在使用大小为400的List进行主测试,T = int。
附件是我的Dartpad文件:https://dartpad.dartlang.org/612422345f1ac8a27f8e
似乎_value.compareTo
的比较不正确,因为T
在int
为T
的情况下没有compareTo。将int转换为&#34; String&#34;虽然compareTo
具有可比性,但它仍然显示相同的错误。
答案 0 :(得分:1)
//other is of same type, T.
if (_value.compareTo(other._value) == -1){
// ^^^^^^^ was missing
return true;
}
return false;