ObservableList中获取

ObservableList中获取

我需要建立一个

LineChart<Number,Number>


我将数据存储在

ObservableList<MyData>


MyData有4个变量,都为int。只需说MyData中的变量为:No1, No2, No3, No4

接下来,我需要建立

LineChart<Number,Number>


而且我只需要No1No2变量,但是我不知道如何从ObservableList中获取该值,现在我只是使用XYChart.Data将新数据添加到XYChart.SeriesLineChart<Number,Number>这个:

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
                new XYChart.Data(3,15),
                new XYChart.Data(7,20)
            );
}


如果我可以从ObservableList中获取值,我可以简单地使用:

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
                myObservableList
            );
}


有人可以帮我解决这个问题吗?

最佳答案

无论如何,您都需要创建一个新列表。没问题,它很快,将只使用少量新内存(仅用于处理程序,不用于对象):

如果知道所需项目的位置,则可以使用List#subList()方法。

private static XYChart.Series dataLineChart = new XYChart.Series();
public static void updateDataChart(){
    dataLineChart.getData().addAll(
            myObservableList.subList(0,2);
    );
}


如果不需要项目,则可以在一行中创建新列表:

ObservableList<String> sublist = FXCollections.observableArrayList(
                     myObservableList.get(3), myObservableList.get(5) );


如果您使用条件将旧列表直接过滤为新方法,也可以保存在新列表中:

public static void updateDataChart(){
    for (MyData data : myObservableList) {
        if ( data.isLucky() ) // or whatever is your condition
            dataLineChart.getData().add(data);
    }
}

07-24 20:42