从一个循环遍历多个列表并将值分配给String

时间:2013-03-29 05:16:51

标签: java list loops arraylist

我的目标是将值一起从不同列表中的值连接成一个字符串。我的字符串看起来像这样:'0 0 0'。第一个0表示'秒',第二个0表示'分钟',第三个0表示'小时'。我创建了三个不同的列表来包含值。第一个是第二个列表,第二个是分钟列表,第三个是小时列表。在创建所有三个列表后,我将这三个列表放入一个主列表中。我正在尝试遍历主列表,然后将值分配到这些位置,以根据这三个列表的大小创建字符串。这三个列表大小是相同的。

import java.util.*;
   public class multipleList{
   public static void main(String[] args){
   ArrayList<String> seconds=new ArrayList<String>();
   ArrayList<String> minutes=new ArrayList<String>();
   ArrayList<String> hours=new ArrayList<String>();
   ArrayList<String> masterList=new ArrayList<String>();

   seconds.add("10");
   seconds.add("20");
   seconds.add("30");
   minutes.add("15");
   minutes.add("16");
   minutes.add("17");
   hours.add("2");
   hours.add("3");
   hours.add("4");

   masterList.addAll(seconds);
   masterList.addAll(minutes);
   masterList.addAll(hours);

       for(String subList:masterList){
          System.out.println(subList);
       }

}

控制台打印的输出是10,20,30,15,16,17,2,3,4。现在我的问题是如何在循环通过主列表(如第一个)后将这些值分配到字符串中string为'10 15 2'(格式为'second minute hour'),第二个字符串为'20 15 3',第三个字符串为'30 17 4'。

2 个答案:

答案 0 :(得分:2)

替换此代码段

masterList.addAll(seconds);
masterList.addAll(minutes);
masterList.addAll(hours);

使用此代码段: -

// Assuming the size of all the 3 lists(hr, min, sec) are the same
for(int i=0;i<hours.size();i++){
    String finalStr = hours.get(i) + " " + minutes.get(i) + " " + seconds.get(i);
    masterList.add(finalStr);
}

答案 1 :(得分:0)

这样的东西?

StringBuilder b = new StringBuilder();
for (int j = 0; j < seconds.size(); ++j) {
  for (int i = j; i < masterList.size(); i += seconds.size()) {
     b.append(masterList.get(i)).append(" ");
  }
  b.append('\n');
}

System.out.println(b);

第一个循环将masterList分成seconds.size()个组。我们使用嵌套(内部)循环遍历每个组。单个组的元素彼此相距seconds.size()个距离,因此我们按seconds.size()递增。

警告:三个列表必须大小相同,并且masterList的大小应为

seconds.size() * 3