【问题标题】:Populate List with two different objects dynamically用两个不同的对象动态填充列表
【发布时间】:2014-10-25 02:56:58
【问题描述】:

我有 2 个列表(list1 和 list2),我想有效地将​​它们合并到一个列表(list3)中。

对于每 x 个 list1 对象插入 list3,我想将 y 个 list2 对象插入 list3。

list3 的最终结果类似于 {x,x,x,y,y,x,x,x,y,y,x,x,x}

我的尝试:这行得通,但对我来说似乎很笨拙。任何帮助将不胜感激

for (int j = 1; f < list1.size(); j++) {
    if ((j % 4) != 0) {
        list3.add(this.list1.get(f));
        f += 1;
    } else {
        if (b < count) {
            for (int k = tracker; (k % 3) != 0; k++) {
                if (b < count) {
                    list3.add(this.list2.get(b));
                    b += 1;
                    tracker += 1;
                }
            }
            tracker += 1;
        }
    }
}

【问题讨论】:

    标签: java logic


    【解决方案1】:

    解决新需求:

        int list1[] = {1,1,1,1,1,1,1,1,1,1,1,1};
        int list2[] = {2,2,2,2,2,2,2,2};
        int list3[] = new int[100];
        int list4[] = {4,4,4,4,4,4,4,4};
        int list5[] = new int[100];
        int i=1,j,k=0,n=0,m=0;int h=0;
        while (k < list1.length+list2.length){      
            if (i++%5 !=0 && n<list1.length) {
                list3[k++]=list1[n++];
            }
            else  {
                if (n==list1.length && m<list2.length) {
                    System.out.println("\nEnd of list1 and list2 even has " + m + " elements");
                    i=1;j=1;n=0;
                    int nl2=list2.length-m; //new length of list2
                    while (h < list4.length+nl2){      
                        if (i++%5 !=0 && n<list4.length) {
                            list5[h++]=list4[n++];
                        }
                        else  {                
                            i=1;j=1;
                            while (j++%3 !=0 && m<list2.length) list5[h++]=list2[m++];                
                        }                                      
                    }   
                    break;
                }
                i=1;j=1;
                while (j++%3 !=0 && m<list2.length) list3[k++]=list2[m++];                
            }                                      
        }
    
        System.out.println("\nList 3:");
        for (i=0;i<k;i++)
            System.out.print(list3[i]+" ");  
    
        System.out.println("\n\nList 5:");
        for (i=0;i<h;i++) 
            System.out.print(list5[i]+" ");    
    

    【讨论】:

      【解决方案2】:

      例如:

      boolean flag = true;
      int counter = 0;
      Iterator<Object> iterator1 = list1.iterator();
      Iterator<Object> iterator2 = list2.iterator();
      while ( iterator1.hasNext() || iterator2.hasNext() ) {
          if (flag) {
              if (counter < 3 && iterator1.hasNext()) {
                  list3.add(iterator1.next());
                  counter++;
              } else {
                  flag = !flag;
                  counter = 0;
              }
          } else {
              if (counter < 2 && iterator2.hasNext()) {
                  list3.add(iterator2.next());
                  counter++;
              } else {
                  flag = !flag;
                  counter = 0;
              }
          }
      }
      

      【讨论】:

        【解决方案3】:

        这个解决方案是数组,但可以作为其他列表的参考。

        int list1[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
        int list2[] = { 3, 3, 3, 3, 3, 3 };
        int list3[] = new int[100];
        int i = 1, j, k = 0, n = 0, m = 0;
        while (k < list1.length + list2.length) {
            if (i++ % 5 != 0 && n < list1.length) {
                list3[k++] = list1[n++];
            } else {
                i = 1;
                j = 1;
                while (j++ % 3 != 0 && m < list2.length)
                    list3[k++] = list2[m++];
            }
        }
        for (i = 0; i < k; i++)
            System.out.print(list3[i] + " ");
        

        【讨论】:

        • 我一直在尝试将其扩展如下,将 list1 和 list2 混合(如问题中所述)并添加到列表 3 中。在 list2 用尽之前,列表 1 被清空。现在我引入list4。我混合 list4 和 list2 的其余部分,并将项目添加到列表 5。帮帮我吗?
        猜你喜欢
        • 2021-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-27
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        • 2015-05-17
        相关资源
        最近更新 更多