我正在嘗試Map使用Set作為鍵構造一個物件:
final myObject = <Set<MyType1>, MyType2>{};
我可以在我的物件中成功插入新值
myObject[{myType1}] = myType2;
但是,我無法從中取回任何東西,因為具有相同值的 2 組不會被視為相等:
{0} == {0}; // <- false
myObject[{myType1}]; // <- null
是否有內置的東西可以讓我使用Map<Set<T>, U>物件?
uj5u.com熱心網友回復:
您可以創建自己的類,用您自己的 equals 和 hashCode 包裝一個 Set。那么問題就解決了。
一個非常粗略的例子來證明我的想法:
class MySet<T> {
final Set<T> inner;
...
@override
bool equals(other) => setEquals(this, other); // https://api.flutter.dev/flutter/foundation/setEquals.html
@override
int hashCode => ...
}
PS 一個 Set 的 equals/hashCode 不是按照內容是否相同來實作的,因為那樣會很費錢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342553.html
上一篇:無法注冊新的FireBase用戶
