In some applications, you may want to create and manage groups of related objects. Collections provide a way to do this. A collection represents a group of objects that have some shared significance. In many object-oriented programming languages, different collection structures are available for holding such objects, each with their own set of capabilities. Structures include lists, maps, sets, stacks, queues, and other types. Each structure varies in how they store, sort, and compare elements. A list, sorted set, and hash map are among the most commonly used collection types and are available as built-in objects in object-oriented ABL. Other types are not supported as built-in objects at this time.

This diagram shows the main interfaces in the Progress.Collections framework.
This table describes these interfaces:
Interface Description
Progress.Collections.IIterator<T> interface This interface enables you to traverse through a collection. Properties and methods include Current, MoveNext(), and Reset().
Progress.Collections.IIterable<T> interface This interface is the root interface for all the collection classes and defines the most primitive set of operations that can be applied to a collection. The GetIterator() method allows you to get an iterator, for traversing a collection.
Progress.Collections.ICollection<T> interface This interface is common to all collections and defines properties and methods to manipulate generic collections. Properties and methods include Add(), AddAll(), Clear(), Contains(), Count, IsEmpty(), and Remove().
Note: When an object-oriented ABL object is added to a collection, the reference count of the object is incremented so that it is not garbage collected while it remains in the collection.

The next topics describe the collections available as built-in objects in ABL.