我有一个 SplayTreeSet
的对象 ChatRoomListModel
。我想根据物品 DateTime createTime
的价值来订购我的套装。
我不确定我哪里出错了,因为添加了重复的项目。
我后来在生产线上执行了一个 _latestMessages.add(newMessage)
并且它实际上并没有调用重载并且添加了重复项。
当我执行 _latestMessage.toSet()
时,每个重复项都会消失。我不确定是什么问题。谢谢!
ObservableSet<ChatRoomListModel> _latestMessages = ObservableSet.splayTreeSetFrom(
ObservableSet(),
compare: (a, b) => b.compareTo(a),
);
ChatRoomListModel
模型有以下方法和重载:
int compareTo(ChatRoomListModel other){
return messagesModel.createTime.compareTo(other.messagesModel.createTime);
}
ChatRoomListModel copyWith({
String? firstName,
String? otherUserId,
MessagesModel? messagesModel,
}) {
return ChatRoomListModel(
firstName: firstName ?? this.firstName,
otherUserId: otherUserId ?? this.otherUserId,
messagesModel: messagesModel ?? this.messagesModel,
);
}
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is ChatRoomListModel &&
runtimeType == other.runtimeType &&
messagesModel.chatRoomId == other.messagesModel.chatRoomId;
@override
int get hashCode => messagesModel.chatRoomId.hashCode;