循环通过可观察列表

时间:2014-06-12 19:38:33

标签: java javafx observablelist

我有一个包含单个列的javafx表(carTable):

+-------------+
+ Brand        +
+-------------+

此列是可观察列表(carOL)的一部分。此OL还包含2个列表(“日期”和“价格”)。对于每个品牌,可以从互联网上下载特定时间窗口的价格。

例如:

Audi
   2014-01-01
   2014-01-02
   55000
   90000
BMW
   2014-01-01
   2014-01-02
   85000
   70000

我现在想要创建一个包含所有这些数据的折线图,比较不同品牌之间的价格发展。

到目前为止我已经提出了什么:

@FXML private CategoryAxis xAxis = new CategoryAxis();
@FXML private NumberAxis yAxis = new NumberAxis();
@FXML private LineChart<String, Number> lc = new LineChart<>(xAxis,yAxis);

Series<String, Number> series = new Series<>();
List<String> d = new ArrayList<String>();
List<Double> p = new ArrayList<Double>();
int id = 0;

for (Car c : carOL) {
    d = c.getDate(); // returns array list with dates from OL
    p = c.getPrice(); // returns array list with prices from OL
    series.getData().add(new XYChart.Data<>(d.get(id), p.get(id)));
    id++;
    }

lc.getData().add(series);

这当然不能完全归还我想要的东西。我不知何故需要为每个品牌创建单独的“系列”。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

如果日期数组中的项目顺序与价格数组中的项目顺序相对应,则需要:

for (Car c : carOL) { 
  d = c.getDate(); // returns array list with dates from OL 
  p = c.getPrice(); // returns array list with prices from OL 
  for (String dates : d.getDate()) { 
    series.getData().add(new XYChart.Data<>(dates, p.get(id))); 
    id++; 
  } 
} 

浏览所有日期并以适当的价格添加它们。