在2D-List JAVA中循环

时间:2018-01-07 04:30:18

标签: java for-loop arraylist multidimensional-array

我正试图从2D列表中获取我的函数的值。

我的2D列表值定义为

List<List<String>> combined2d = new ArrayList<List<String>>();

将值添加到我的列表后,结构如下所示,

[[62744768, 62536400, 63689012, 63676486], [67888160, 67852422, 67299346, 68149470], [2017-09-06, 2017-09-05, 2017-09-17, 2017-09-15]]

我有一个带3个参数的函数,即

FuncA(string param1,string param2,string param3)
{
//some operations
}

现在我想通过循环2D列表值来传递FuncA的参数。

For Loop 1

我必须从列表中获取00,10,20索引值,例如

  

62477,6780,2017-09-06

这样我就会将参数传递给我的FuncA,如

FuncA(62477,6780,2017-09-06)

For Loop 2

就像循环2一样,

FuncA(600,6785,2017-08-05)

For Loop 3

FuncA(12,646,2017-07-17)

最多N次循环......

对于一个简单的ArrayList,我可以像这样循环遍历

    for(String value:Singlearraylist) {
        FuncB(value);
    }

由于我是java的新手,我无法在这里找到解决问题的方法。

感谢您的回复
JAY

3 个答案:

答案 0 :(得分:2)

unsigned int

我认为这对你很好。

答案 1 :(得分:2)

如果所有列表的大小不均匀,则循环大小应该是2-d列表中给出的所有给定列表的最小大小。因此代码可以写成forllows:

List<List<String>> combined2d = new ArrayList<List<String>>();

int minTemp = Math.min(combined2d.get(0).size(),combined2d.get(1).size());
int min = Math.min(minTemp,combined2d.get(2).size());

for(int i=0; i<min ; i+= 10){
    FuncA(combined2d.get(0).get(i), combined2d.get(1).get(i), combined2d.get(2).get(i));
}

答案 2 :(得分:1)

正如@MadProgrammer建议的那样,创建一个包含数据成员param1 param2 param3的类,其中包含getter和setter以及此类类型的列表,您可以使用它来迭代传递值FuncA(...,...,...)

class Data{
    String param1, param2, param3;
    // constructors, getters and setters
}

List<Data> listData = new ArrayList<>();
for(Data temp : listData)FuncA(temp.getParam1(),temp.getParam2(),temp.getParam3());

此处创建列表的方式也是@MadProgrammer在评论中建议的关键。 这样,您的代码就更容易阅读和调试。