2017-05-28 61 views
0

我正在构建电子商务应用程序,并且我有一种情况需要删除商店中不可用的大小。在Java中使用嵌套数组迭代

我已固定的字符串的数组列表与样品是这样的:"36", "38", "40", "42" 和我有可用尺寸与样品是这样的:"36", "38", "40"

现在我需要通过第一阵列迭代和划掉那些不可用的尺寸。

这里是一个代码部分在那里我这样做:

// tempSizes - available sizes 
// mProduct.getSizes() - all sizes 
for (String tempSize : tempSizes) { 
     for (int i = 0; i < mProduct.getSizes().size(); i++) { 
      if (tempSize.equals(mProduct.getSizes().get(i))) { 
       // if size is available 
       sizes.add(new Size(mProduct.getSizes().get(i), true)); 
      } else { 
       // if size is not available 
       sizes.add(new Size(mProduct.getSizes().get(i), false)); 
      } 
     } 
} 

这里的问题是,嵌套的for循环将被调用三次,结果将与样品的重复输出。如果有更简单的方法来做到这一点,请让我知道,我将不胜感激。

+0

这些都不是数组。不过,它们可能是'ArrayList'。 –

+0

他们看起来像list/arraylist api – Remario

+0

赦免,这是一个数组列表。 –

回答

3

您可以轻松地使用ArrayList一个for循环,例如:

List<Integer> samples = Arrays.asList(36, 38, 40 ,42); 
List<Integer> available = Arrays.asList(36, 38, 40); 
List<Integer> unavailable = new ArrayList<>(); 
for(int size : samples){ 
    if(!available.contains(size)){ 
     unavailable.add(size); 
    } 
} 
System.out.println(unavailable); 

这将通过所有样本迭代,检查它们是否可用,如果没有,把它们放到anoter名单做。如果您有阵列,则可以使用Arrays.asList()方法将它们转换为列表。

+0

不错。我认为这将解决我的问题。 –

+0

'unavailable.addAll(available); unavailable.removeAll(样本);'。 –

+0

@AndyTurner我宁愿不更改现有的列表/阵列,因为它们可能会被更进一步地使用。尽管我同意这种做法。 –

1

试试这个代码

// mProduct.getSizes() - all sizes 
for (int i = 0; i < mProduct.getSizes().size(); i++) { 


    int prodSize = mProduct.getSizes().get(i);  
    boolean sizeFound = false; 

    // tempSizes - available sizes 
    for (String tempSize : tempSizes) { 

      if (tempSize.equals(mProduct.getSizes().get(i))) { 
       // if size is available 
       sizes.add(new Size(prodSize, true)); 
       sizeFound = true; 
       break; 

      } 

     } 

     if(sizeFound == false){ 
      // if size is not available 
      sizes.add(new Size(mProduct.getSizes().get(i), false)); 
     } 

} 
+0

这两个答案都很有帮助,但Darshan的方法我认为更好一些,因为它不需要嵌套for循环,代码少。 –

+0

是的,同意你的意见。 –