[英]Looping over multiple objects in Java
我试图在这个 repo的以下代码中循环多个数据序列:
// configuring everything by default
Plot plot = Plot.plot(null).
// setting data for data series one
series("dataseries One", Plot.data().
xy(1, 2).
xy(3, 4), null);
// setting data for data series two
series("dataseries Two", Plot.data().
xy(10, 20).
xy(30, 40), null);
// saving sample_minimal.png
plot.save("sample_minimal", "png");
但是,数据序列的数量( List<Double> x
和List<Double> y
对象的两个数组List<Double> x
)目前是硬编码的,我在遍历任意数量的数据序列/行时遇到了一些困难。
特别是我认为我可以写一个 for 循环,如:
for(int i = 0; i < y_data_series; i++){
series(f'Data Series {i}', Plot.data().
xy(x_data_series.get(i),y_data_series.get(i)),
但是Plot plot = Plot.plot(null).
末尾的点Plot plot = Plot.plot(null).
意味着需要使用系列方法而不是 for 循环。
我怎样才能遍历 Plot 对象中的两个数据序列数组列表?
zip
/ map
/ fold
可能是一种选择,因为它们可能与系列方法一样具有功能。我不确定我是否理解您的问题,但我认为这些方面的内容应该对您有用:
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class PlotTest {
public static void main(String[] args) {
Plot plot = Plot.plot(null);
final List<List<Double>> multipleXseries = new ArrayList<List<Double>>();
final List<List<Double>> multipleYseries = new ArrayList<List<Double>>();
final List<Double> xSeries1 = new ArrayList<Double>();
final List<Double> ySeries1 = new ArrayList<Double>();
xSeries1.add(0D);ySeries1.add(10D);
xSeries1.add(1D);ySeries1.add(20D);
xSeries1.add(2D);ySeries1.add(30D);
multipleXseries.add(xSeries1);
multipleYseries.add(ySeries1);
final List<Double> xSeries2 = new ArrayList<Double>();
final List<Double> ySeries2 = new ArrayList<Double>();
xSeries2.add(0D);ySeries2.add(15D);
xSeries2.add(1D);ySeries2.add(25D);
xSeries2.add(2D);ySeries2.add(35D);
multipleXseries.add(xSeries2);
multipleYseries.add(ySeries2);
for(int i = 0; i < multipleXseries.size(); i++) {
Plot.Data data = Plot.data().xy(multipleXseries.get(i), multipleYseries.get(i));
plot = plot.series("Data Series " + i, data, null);
}
try {
plot.save("test", "png");
} catch (IOException e) {
e.printStackTrace();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.