Я создаю приложение для электронной коммерции, и у меня есть один сценарий, в котором мне нужно вычеркнуть размеры, которых нет в магазине.

Я исправил массив строк с образцом, как это: "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));
            }
      }
}

Проблема здесь в том, что вложенный цикл будет вызываться три раза, и результат будет выводиться с дубликатами выборки. Если есть более простой способ сделать это, пожалуйста, дайте мне знать, я был бы признателен.

0
Dusan Dimitrijevic 28 Май 2017 в 17:15

2 ответа

Лучший ответ

Вы можете легко сделать это с помощью 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);

Это будет проходить по всем выборкам, проверять их наличие и, если нет, помещать их в список повторов. Если у вас есть массивы, вы можете использовать метод Arrays.asList() для преобразования их в списки.

3
Darshan Mehta 28 Май 2017 в 14:22

Попробуйте этот код

// 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));
      }

}
1
Rakesh Soni 28 Май 2017 в 14:33