【问题标题】:Iterating two lists same time which have different size同时迭代两个大小不同的列表
【发布时间】:2013-01-25 12:02:04
【问题描述】:

我有两个列表 X,Y。

哪些是字符串列表。

这两个列表的大小可能不同。

如果两个列表的大小相同,都是 2,那么我可以像

   for (int i =0;  i<anyList.size(); i++){
     system.out.printLn(X(i) +" "+Y(i));
  }

example result  :

stringX1 stringY1 
stringX2 stringY2

如何处理大小不同的循环

示例结果应该是这样的

示例结果:

    stringX1 stringY1 
    stringX2 stringY2
    stringX3
    stringX4

【问题讨论】:

    标签: java


    【解决方案1】:
    Iterator<String> x_it = x.iterator();
    Iterator<String> y_it = y.iterator();
    while(x_it.hasNext() && y_it.hasNext()){
       System.out.println(x.next() + " " + y.next())
    }
    while(x_it.hasNext()){
       System.out.println(x.next());
    }
    
    while(y_it.hasNext()){
       System.out.println(y.next());
    }
    

    【讨论】:

      【解决方案2】:
      for (int i =0;  i<max(X.size(),Y.size()); i++){
        if(i<X.size() && i<Y.size()) {
          print(X.get(i) + " " + Y.get(i));
        } else if(i<Y.size()) {
          print(Y.get(i));
        } else {
          print(X.get(i));
        }
      }
      

      编写一个 max(int, int) 和 print(String) 方法应该不难。

      【讨论】:

        【解决方案3】:
        if(arr1.size()>=arr2.size())
            max  = arr1.size();
        else
            max = arr2.size();
        
        for(int i=0;i<max;i++)
        {
            if(arr1.size() >= i+1)
                System.out.println(arr1.get(i));
            if(arr2.size() >= i+1)
            System.out.println(arr2.get(i));
        }
        

        【讨论】:

          【解决方案4】:
          public static void main(String[] args) {
              List<String> l1 = new ArrayList<String>();
              l1.add("Pif");
              l1.add("Paf");
              l1.add("Pouf");
              List<String> l2 = new ArrayList<String>();
              l2.add("Argh!");
              l2.add("Aie!");
          
              Iterator<String> it1 = l1.iterator();
              Iterator<String> it2 = l2.iterator();
          
              String s1, s2;
              while (it1.hasNext() || it2.hasNext()) {
                  if (it1.hasNext()) {
                      s1 = it1.next();
                      System.out.print(s1 + " - ");
                  }
                  if (it2.hasNext()) {
                      s2 = it2.next();
                      System.out.print(s2);
                  }
                  System.out.println();
              }
          
          
          }
          

          产量:

          Pif - Argh!
          Paf - Aie!
          Pouf - 
          

          【讨论】:

            【解决方案5】:
             int size = x.size() > y.size ? x.size() : y.size();
             for (int i =0;  i< size ; i++)
             {
                 System.out.printLn( ( x.size() > i + 1 ? X(i) : "") +" "+( y.size() > i + 1 ? Y(i) : "") );
              }
            

            【讨论】:

              【解决方案6】:
              List<String> shorter = Arrays.asList("red", "blue");
              List<String> longer = Arrays.asList("one", "two", "three", "four");
              
              int size = Math.max(shorter.size(), longer.size());
              
              StringBuilder sb = new StringBuilder();
              for (int i = 0; i < size; i++) {
              
                if (shorter.size() > i) {
                  sb.append(shorter.get(i)).append('\t');
                } else {
                  sb.append("\t\t");
                }
              
                if (longer.size() > i) {
                  sb.append(longer.get(i));
                }
              
                sb.append('\n');
              }
              
              System.out.println(sb.toString());
              

              输出

              red   one
              blue  two
                    three
                    four
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2016-08-28
                • 2016-08-02
                • 1970-01-01
                • 2016-07-11
                • 2022-11-03
                • 2017-10-15
                • 2019-11-10
                • 2014-02-01
                相关资源
                最近更新 更多