【问题标题】:Loop through multiple arraylists and get elements遍历多个数组列表并获取元素
【发布时间】:2019-08-22 21:09:29
【问题描述】:
public static void main(String[] args)
{
        loadDependencies ld = new loadDependencies();
        List<String> ls = ld.loadDependenciesFromPom();  
        getAvailableHigherVersions ah = new getAvailableHigherVersions();

        List<List<String>> vl = ah.versionListOnly();
        String previousVersion=null;

        for ( int a=0; a<vl.size();a++) {
            List<String> tmp = vl.get(a);
            for(int i=0; i<ls.size();i++){
                String firstE = ls.get(i);
                for(int j=0;j<tmp.size();j++) {
                    if (i==0  && j==0){
                        //xu.versionUpdate(previousVersion, tmp.get(j));
                        //String previousVersiontt = ls.get(i);
                        System.out.println(firstE + "----" + tmp.get(j));
                    }
                        /*xu.versionUpdate(previousVersion, tmp.get(j));
                        previousVersion=tmp.get(j);*/
                        //System.out.println(previousVersion+"-"+tmp.get(j));
                      //  previousVersion = tmp.get(j);

                }
            }
        }
}

"ls" 是一个字符串列表。它包含这样的

[1,4,5,7]

“vl”是一个字符串列表。它包含这样的

[[1.5,1.6,1.7],[4.1,4.2,4.3],[5.1,5.2],[7.1,7.4]]

我需要做的是首先取 ls list 的第一个元素

1

然后我需要获取 vl 列表中的第一个元素

[1.5,1.6,1.7]

那么输出应该是

[1,1.5]

那么下一个输出将是

[1.5,1.6]

同样遍历数组。 然后接下来取 ls 的第二个元素

4

那么它应该像 4,4.1 然后 4.1,4.2 一样,直到 ls 为空。 我尝试了上面的代码,但有时它会迭代多次。有什么提示可以解决这个问题吗?

【问题讨论】:

  • 这与您的问题无关,但请使用命名约定:类名应以大写字母开头。看起来方法调用是这样的。
  • 提示:改用 forEach 类型的循环,阅读 String 类的文档以找到过滤正确子元素的合适方法
  • ls 中的元素个数总是等于(外部)列表vl 中的元素个数?
  • @RobertKock 是的,它是一样的
  • [1.6, 1.7]之后应该打印什么? [4, 4.1] 或 [1.7, 4]?

标签: java arrays string loops arraylist


【解决方案1】:
for(int i=0;i<ls.size();i++){
   List<String> tmp = vl.get(i);
   System.out.println(ls.get(i)+" "+temp.get(0));
   for(int j=1;j<tem.size()-1;j++){
      System.out.println(temp.get(j)+" "+temp.get(j+1));
   }       
}

【讨论】:

    【解决方案2】:

    所以如果我理解得很好,你想要这样的东西:

    for (int a = 0; a < ls.size(); a++)
    {
      // Get first element
      String firstE = ls.get(a);
    
      // Get corresponding vl elements
      List<String> vls = vl.get(a);
    
      // Now print the elements
      // The first element of vl should be preceeded by the corresponding element in ls
      // The others by the predecessor in the same array
      for (int b = 0; b < vls.size(); b++)
      {
        System.out.print("[");
        if (b == 0)
          System.out.print(firstE);
        else
          System.out.print(vls.get(b - 1));
        System.out.println(", " + vls.get(b) + "]");
      }
    
    }
    

    【讨论】:

      【解决方案3】:
      for ( int a=0; a<vl.size();a++) {
              List<String> tmp = vl.get(a);
              String firstE = ls.get(a);
                  for (int j = 0; j < tmp.size(); j++) {
                      if (j == 0) {
                          //xu.versionUpdate(previousVersion, tmp.get(j));
                          //String previousVersiontt = ls.get(i);
                          System.out.println(firstE + "----" + tmp.get(j));
                      }
                          /*xu.versionUpdate(previousVersion, tmp.get(j));
                          previousVersion=tmp.get(j);*/
                      //System.out.println(previousVersion+"-"+tmp.get(j));
                      //  previousVersion = tmp.get(j);
      
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多