Каков наиболее эффективный способ сравнения / сортировки элементов из двух массивов?
-
16-09-2019 - |
Вопрос
У меня есть вопрос по поводу эффективной реализации.Допустим, у меня есть два массива:
One array is all possible items in a house: Table, Chair, TV, Fireplace, Bed The other is an array of items in a particular house: Table, TV, Bed
У меня также есть два списка:
1. listbox for items in the house - the "HAS" list box 2. listbox items not in the house - the "NEEDS" list box
Мне нужно перечислить предметы, которые уже есть в доме, в списке "ЕСТЬ", а также предметы, которых НЕТ в доме, в списке "ПОТРЕБНОСТИ".Мне кажется, что вложенные циклы "Для каждого" были бы началом решения этой проблемы, но я не совсем уверен, какой случай должен быть вложенным.Каков наиболее эффективный способ выполнения подобной задачи?
Решение
var allItems = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"});
var hasItems = (new [] {"Table", "Chair"});
var hasList = hasItems.ToList();
var needsList = allItems.Except(hasItems).ToList();
Другие советы
var allList = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"}).ToList();
var hasList = (new [] {"Table", "Chair"}).ToList();
var hasSet = new HashSet<string>(hasList);
var needsList = allList.Where(i => !hasList.Contains(i)).ToList();
Это ~ самое быстрое решение (по крайней мере, в обозначение большой буквы O).
Не связан с StackOverflow