Найдите “не те же” элементы в двух массивах

У меня есть два целочисленных списка (List<int>). Они содержат те же элементы, но Список 1 содержит элементы, которые не находятся в Списке 2.

Как найти, какие элементы Списка 1 НЕ НАХОДЯТСЯ в Списке 2.

Спасибо :)

PS. Ленг является c#

7
задан brickner 1 June 2010 в 17:13
поделиться

6 ответов

new HashSet<int>(l1).ExceptWith(l2);
3
ответ дан 6 December 2019 в 08:42
поделиться

Очень простое решение:

HashSet<int> theSet1 = new HashSet<int>(List1);
theSet1.ExceptWith(List2);
1
ответ дан 6 December 2019 в 08:42
поделиться

Для простоты вы можете использовать Метод Contains и проверка одного списка, не содержащего элемента другого:

for (int i = 0; i < list2.Count; ++i)
{
    if (!list1.Contains(list2[i]) //current element is not in list 1
        //some code
}
0
ответ дан 6 December 2019 в 08:42
поделиться

Если ваше решение состоит в том, что первый список содержит второй и вам охота, чтобы онли записи добавлялись после первого списка, Возможно, это будет полезно

public static int DokleSuIsti(IList<string> prevzemNow, IList<string> prevzemOld)
        {
            int dobroja = 0;
            int kolikohinaje;
            if (prevzemOld.Count() < prevzemNow.Count())
            {
                kolikohinaje = prevzemOld.Count();
            }
            else
            {
                kolikohinaje = prevzemNow.Count();
            }



            for (int i = 0; i < kolikohinaje; i++)
            {
                if (!Object.Equals(prevzemNow[i], prevzemOld[i]))
                {
                    dobroja = i;
                    return dobroja;
                }
                dobroja = i;
            }
            return dobroja;
        }

После этого вы можете использовать этот int как отправную точку для прохода по вашему списку

0
ответ дан 6 December 2019 в 08:42
поделиться

Вы можете использовать IEnumerable.Except:

list1.Except(list2);
18
ответ дан 6 December 2019 в 08:42
поделиться

Если они не отсортированы или что-то в этом роде, вам будет трудно.

Либо O(N^2) алгоритм (простой, тупой цикл), либо дополнительные структуры данных, скажите, что вам больше нравится.

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

-1
ответ дан 6 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: