У меня есть два целочисленных списка (List<int>
). Они содержат те же элементы, но Список 1 содержит элементы, которые не находятся в Списке 2.
Как найти, какие элементы Списка 1 НЕ НАХОДЯТСЯ в Списке 2.
Спасибо :)
PS. Ленг является c#
Очень простое решение:
HashSet<int> theSet1 = new HashSet<int>(List1);
theSet1.ExceptWith(List2);
Для простоты вы можете использовать Метод Contains и проверка одного списка, не содержащего элемента другого:
for (int i = 0; i < list2.Count; ++i)
{
if (!list1.Contains(list2[i]) //current element is not in list 1
//some code
}
Если ваше решение состоит в том, что первый список содержит второй и вам охота, чтобы онли записи добавлялись после первого списка, Возможно, это будет полезно
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 как отправную точку для прохода по вашему списку
Вы можете использовать IEnumerable.Except
:
list1.Except(list2);
Если они не отсортированы или что-то в этом роде, вам будет трудно.
Либо O(N^2) алгоритм (простой, тупой цикл), либо дополнительные структуры данных, скажите, что вам больше нравится.
Или, вы, конечно, можете изменить исходные данные путем сортировки, что, я полагаю, не вариант.