0

我的目标是将值从不同列表中的值全部连接到一个字符串中。我的字符串如下所示:'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。现在我的问题是如何在通过主列表循环后将这些值分配到字符串中,例如第一个字符串将是'10 15 2'(格式为'second minute hour'),第二个字符串是'20 15 3',第三个字符串是'30 17 4'。

4

2 回答 2

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);
}
于 2013-03-29T05:22:34.433 回答
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.

于 2013-03-29T05:21:38.783 回答