不允许重复项目的TableView使用哪种数据结构?

时间:2019-05-04 15:53:16

标签: java javafx tableview javafx-8 observablelist

我试图找到一种数据结构,该数据结构可用于保存TableView数据,但不允许重复的项。如果我不需要用于TableView的ObservableList(更确切地说是ObservableList),则可以使用HashSet,但可以。

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

有人知道任何解决方案吗?

1 个答案:

答案 0 :(得分:0)

首先确定相等条件以及使对象重复的原因。然后在您的类中覆盖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()));