Javafx:如何将唯一元素添加到 Listview 中(即跳过重复元素)

Javafx : How I can add unique Elements into Listview (i.e Duplicate Element Get Skipped)

我是 javafx 的新手,我想在 javafx 中使用带有唯一元素的列表,我该如何管理它。显示列表视图的内容应该是唯一的重复值被跳过。 谢谢

static ObservableList<String> items = FXCollections.observableArrayList();
static ObservableList<String> bamitems = FXCollections
        .observableArrayList();

static ListView<String> list;
static ListView<String> listforbam;

public static void test() throws Exception {
    HBox root = new HBox();
    VBox yesaccordion = new VBox();

    Accordion acc = new Accordion();
    acc.getPanes().addAll(createPanes());
    yesaccordion.getChildren().add(acc);

    root.getChildren().addAll(yesaccordion);
    jfxpanel.setScene(new Scene(root, 200, 100));
    panel.add(jfxpanel);
    items.addAll(LoadVCFFileToTrack.destitemlist);
    bamitems.addAll(LoadVCFFileToTrack.destitemBamlist);


    if (LoadVCFFileToTrack.destitemBamlist.size() > 0) {
        listforbam = new ListView<String>();
        listforbam.setItems(bamitems);
    }
    if (LoadVCFFileToTrack.destitemlist.size() > 0) {
        list = new ListView<String>();
        list.setItems(items);

    }

使用 Set or better an ObservableSet 存储要在 ListView 中显示的项目。

要将集合添加到列表视图,您可以使用 FXCollections.observableArrayList(Collection col) 方法。它将 ObservableSet 转换为 ObservableArrayList

listView.setItems(FXCollections.observableArrayList(observableSet));

完整示例

public class Main extends Application {
    @Override
    public void start(Stage stage) {

        ObservableSet<String> observableSet = FXCollections.observableSet();
        //Item1 is repeated twice
        observableSet.addAll(Arrays.asList("Item1","Item2","Item3", "Item1"));
        ListView<String> listView = new ListView<>();
        listView.setItems(FXCollections.observableArrayList(observableSet));
        stage.setScene(new Scene(listView, 200, 200));
        stage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }

}