Как сказать, как могут быть уникальные элементы NSArray - PullRequest
1 голос
/ 08 июля 2010

У меня есть массив (на самом деле изменяемый массив) NSStrings, и я хочу выяснить, сколько уникальных элементов содержится в массиве.

Например, скажем, массив состоит из:

Orange, Lemon, Lemon, Orange, Lemon

Тогда есть просто два уникальных элемента (апельсин и лимон). И этот массив:

Paul, Steve, John, Harry, Paul, John

.. имеет четыре уникальных уникальных элемента.

Как мне узнать это число?

Ответы [ 3 ]

13 голосов
/ 08 июля 2010

NSSet не может содержать одинаковые объекты, поэтому следующие работы:

NSUInteger count = [[NSSet setWithArray:array] count];
1 голос
/ 08 июля 2010

Выполните линейное сканирование массива и, для каждого элемента, добавьте его в NSMutableSet. Наконец подсчитайте количество элементов в NSMutableSet. NSMutableSet не позволит добавить повторяющийся элемент.

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

РЕДАКТИРОВАТЬ: реализация в Objective-C была предоставлена ​​JoostK.

0 голосов
/ 19 декабря 2013
NSUInteger count = [[array valueForKeyPath:@"@distinctUnionOfObjects.self"] count];
...