Objective C equivalent to Java's ArrayList

Julio picture Julio · Jul 28, 2010 · Viewed 14.1k times · Source

Just wondering if there is an equivalent to Java's ArrayList in Objective-C?

Or something that can be used to store objects/data that does not have a set size.

Thanks.

Answer

Barry Wark picture Barry Wark · Jul 28, 2010

As others have pointed out, NSArray/NSMutableArray are what you're looking for.

Coming from the Java world, you may find that Cocoa's collection offerings feel quite paltry. In fact, the functionality is quite extensive. The NSArray, NSDictionary, and NSSet are, in fact, class clusters, meaning that the public API is an "abstract" class. When you initialize one of the collections, what you get back is, in fact, a concrete implementation tailored for the data you provide. These implementations can also change the concrete implementation at run time if the data changes (e.g. it grows in size). This is all possible due to Objective-C's much more dynamic run time than Java's static typing (and security) will allow. The class cluster strategy thus hides many of the implementations of, e.g. the java.util.List interface, behind a single API.

The Cocoa frameworks are somewhat limited in compound data structures (i.e. those built on top of "primitive" arrays, sets, and dictionaries). You may find that the excellent, open source CHDataStructures fills in many of the gaps.