Не удалось найти rake-10.0.4 ни в одном из источников (Bundler :: GemNotFound)

Простой подход является foreach в списке1 и проверяет, находится ли элемент в списке2, если не добавлен в список3.

outer:
for(String s : list1) {
    for(MyClass c : list2) 
        if(c.getStr().equals(s))
            continue outer;
    filteredList.add(c);
}

Если вы обнаружите, что продолжаете называть недоумение, извлеките внутренний цикл в логическая возвращающая функция. Вы также можете заменить классический foreach для итератора лямбда-потока.

public static boolean isInList(ArrayList<MyClass> list, String s) {
    list2.stream().foreach((o)-> {
        if(o.getStr().equals(s)) {
            return true;
        }
    });
    return false;
}

list1.stream().foreach((s) -> {
    if(!isInList(list2, s)) {
        list3.add(s);
    }
});

, но он действительно выглядит более неприглядным / загрязненным и ненужным для моих глаз.

Кроме того, String str в ваш класс не имеет общедоступного определения, поэтому я в обоих примерах использовал метод getStr (), предполагая, что ваш класс следует за моделью java bean и содержит метод getStr ().

13
задан Oxfist 9 September 2017 в 07:36
поделиться