SplayTreeSet 包含重复值

问题描述 投票:0回答:0

我有一个 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;
dart set mobx splay-tree
© www.soinside.com 2019 - 2024. All rights reserved.