如何将可观察列表转换为数组列表? Java的

时间:2016-10-05 11:25:49

标签: java javafx

我试图获取表格视图中的所有项目并将它们放在数组列表中以便进一步处理。这就是我想要实现的目标,但显然它不会起作用。

ArrayList<Consultation> showing = consultationTable.getItems();

4 个答案:

答案 0 :(得分:3)

不错的推荐解决方案:

List<Consultation> showing = provider.getItems();

仅在必要时使用的解决方案:

    List<Consultation> consultations = provider.getItems();
    ArrayList<Consultation> showing;
    if (consultations instanceof ArrayList<?>) {
        showing = (ArrayList<Consultation>) consultations;
    } else {
        showing = new ArrayList<>(consultations);
    }

如果由于某种原因你需要使用不在List或ObservableList接口中的ArrayList方法(我不能想到为什么),你可以使用后者。

答案 1 :(得分:2)

使用Stream类

的简单方法
List<T> list = ObservableList<T>.stream().collect(Collectors.toList());

答案 2 :(得分:0)

尝试一下

new ArrayList<>(consultationTable.getItems())

答案 3 :(得分:-1)

// To convert an observable list to an array of strings given the following observable list:

// Create these in the class 
ListView<String> myListView = new ListView<>();
ObservableList<String> myList;

//然后在start类中定义它们    myList = FXCollections.observableArrayList(someGivenArray);    myListView.setItems(myList中);

// Make an array to store list items in the observable list as strings
List<String> myArray = new ArrayList<String>();

// Loop through the observable list and load the string array
    for (int i =0; i<myList.size(); i++){
       myArray.add(myList.get(i));
    }
// Test by printing out to the screen or a text field
    System.out.println(myList.get(0));
    myTextField.setText(myList.get(0));