Сравнение двух массивов

Редактор кода C# в Visual Studio 2008 имеет функцию для удаления неиспользованный использование операторы.

Щелкают правой кнопкой и выбирают , Организуют Использования |, Удаляют Неиспользованные Использования .

28
задан DVK 25 September 2009 в 06:24
поделиться

2 ответа

NSMutableArray *arrayOneCopy = [NSMutableArray arrayWithArray:arrayOne];
[arrayOneCopy removeObjectsInArray:arrayTwo];
60
ответ дан 28 November 2019 в 02:24
поделиться

Используйте NSMutableSet :

NSMutableSet *setOne = [NSMutableSet setWithArray: arrayOne];
NSMutableSet *setTwo = [NSMutableSet setWithArray: arrayTwo];

[setOne minusSet: setTwo];

NSArray *arrayOneResult = [setOne allObjects];

(строго говоря, setTwo не обязательно должен быть изменяемым, он также может быть NSSet (который работает лучше))

Или используйте NSArray, как ответил другой человек - это тоже работает.

Какой из них работает, полностью зависит от размера вашего набора данных. Для небольших наборов данных решение массива работает нормально. Для больших наборов NSSet будет гораздо более эффективным, поскольку тесты членства представляют собой проверку хэша, а не линейный поиск.

Измерьте и используйте тот, который работает лучше всего.

28
ответ дан 28 November 2019 в 02:24
поделиться