我的代碼中有一個串列,其中包含contactsInfo 的物件串列,例如
myContactsModel(
displayName: 'Alex',
phoneNumbers: ' 4412318293',
avatar: avatar)
myContactsModel(
displayName: 'Alex',
phoneNumbers: ' 4412318293',
avatar: avatar)
這些物件存盤在一個串列中。如何確保串列中不存在具有相同名稱和編號的重復項
uj5u.com熱心網友回復:
你需要
- 覆寫相等
==運算子, - 這反過來又需要覆寫
hashCode, - 然后使用 a
Set來存盤獨特的專案。
示例作業代碼
class ContactsModel {
String displayName;
String phoneNumbers;
String avatar;
ContactsModel(this.displayName, this.phoneNumbers, this.avatar);
@override
String toString() {
return """
{
'displayName': $displayName,
'phoneNumbers': $phoneNumbers,
'avatar': $avatar,
}""";
}
@override
bool operator ==(other) {
if (other is! ContactsModel) {
return false;
}
return displayName == other.displayName &&
phoneNumbers == other.phoneNumbers;
}
@override
int get hashCode => (displayName phoneNumbers).hashCode;
}
void main() {
var models = <ContactsModel>{};
models.add(
ContactsModel('Alex', ' 4412318293', 'avatar1'),
);
models.add(
ContactsModel('Alex', ' 4412318293', 'avatar1'),
);
print(models);
}
輸出:
{{
'displayName': Alex,
'phoneNumbers': 4412318293,
'avatar': avatar1,
}}
在DartPad 中嘗試一下。
資訊豐富的答案集合如何確定兩個物件在飛鏢中相等?.
uj5u.com熱心網友回復:
本森 OO
我應用了 C&C 的一些基本邏輯,我得到了結果。!
我創建了UserModel類,
class UserModel {
final String? name;
final String? phoneNo;
UserModel({this.name, this.phoneNo});
}
稍后,我將 5 條記錄與不同型別的資料存盤在userData命名的 UserModel 型別串列中。
List<UserModel> userData = [
UserModel(name: 'ABC', phoneNo: '1234567890'),
UserModel(name: 'ABC', phoneNo: '1234567890'),
UserModel(name: 'DEF', phoneNo: '1234567890'),
UserModel(name: 'ABC', phoneNo: '1234567800'),
UserModel(name: 'CBA', phoneNo: '0987654321'),
];
在 Tap 我創建了一個方法并運行一個回圈以從中獲取唯一記錄userData,
for (int i = 0; i < userData.length; i ) {
if (i < userData.length - 1) {
if (userData[i].name != userData[i 1].name ||
userData[i].phoneNo != userData[i 1].phoneNo) {
sortedUserData.add(userData[i]);
}
} else {
sortedUserData.add(userData[i]);
}
}
并將輸出存盤在sortedUserData命名串列中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/369080.html
