【问题标题】:Which data structure use for a TableView that doesn't allow duplicate items? [duplicate]哪种数据结构用于不允许重复项的 TableView? [复制]
【发布时间】:2019-05-04 15:53:15
【问题描述】:

我试图找到一种可用于保存 TableView 数据但不允许重复项的数据结构。如果我不需要 TableView 的 observable,更准确地说是 ObservableList,我会使用 HashSet,但我不能。

我已经考虑为此创建一个实现 ObsevableList 的新类,因为我真的不希望有 2 个数据结构,例如 ObservableSet 和 ObservableList。

有人知道解决办法吗?

【问题讨论】:

  • 只需使用ObservableSet 并为其添加一个侦听器,以在添加/删除对象时更新tableview 列表。
  • 但是这样我使用的是 2 个列表,双倍内存,对吧?
  • 查看引用帖子的first answer。它描述了如何自己创建一个简单的可观察列表,它不允许重复。

标签: java javafx tableview javafx-8 observablelist


【解决方案1】:

首先确定相等条件以及对象重复的原因。然后在你的类中覆盖equalshashcode 方法。 (如果您使用的是 String 或 Integer 之类的类,则这些类应该已经定义好。)。然后,当您尝试将对象添加到表中时,您只需检查表是否已包含该项目:

if(!table.getItems().contains(newItem)) table.getItems.add(newItem);

或者如果你不是一一添加对象,你可以使用Java8 Stream API:

table.getItems().setAll(table.getItems().stream().distinct().collect(Collectors.toList()));

【讨论】:

    猜你喜欢
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2015-04-12
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    相关资源
    最近更新 更多