Qual é a maneira mais eficiente para comparar itens / tipo de duas matrizes?
-
16-09-2019 - |
Pergunta
Eu tenho uma pergunta sobre a implementação eficiente. Vamos dizer que eu tenho duas matrizes:
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
Eu também tenho duas caixas de listagem:
1. listbox for items in the house - the "HAS" list box 2. listbox items not in the house - the "NEEDS" list box
Eu preciso para listar os itens já na casa em "TEM" caixa de listagem, bem como os itens que não estão na casa na caixa de listagem "necessidades". Parece-me que nested "para cada" loops seria um começo para resolver este problema, mas eu não estou exatamente certo que as necessidades caso a ser aninhados. Qual é a maneira mais eficiente de realizar uma tarefa como esta?
Solução
var allItems = (new [] {"Table", "Chair", "TV", "Fireplace", "Bed"});
var hasItems = (new [] {"Table", "Chair"});
var hasList = hasItems.ToList();
var needsList = allItems.Except(hasItems).ToList();
Outras dicas
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();
Isso é ~ a solução mais rápida (pelo menos, em notação Big O ).
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow