繁体   English   中英

在 Java 中循环多个对象

[英]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> xList<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 对象中的两个数据序列数组列表?

疑问

  1. 我认为我的问题有点不恰当,因为我还不完全知道语法是如何工作的,当在另一个系列方法上“调用”一个系列方法时,中间有一个点。 但是,我希望上下文能澄清问题所在。
  2. 我认为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM