There are three types of collections in Clojure: counted, sequential, and associative. They are not mutually exclusive, meaning one collection might be any.
Let's look at each type:
Counted collection: A counted collection is a collection which knows its size in constant time. It doesn't need to traverse its elements to get a count.
Sequential collection: A sequential collection can be traversed sequentially; it's the most common approach that you would use for a list. The easiest way to think about this is similar to Java's list, which you can traverse with a for-loop or an iterator. In Clojure vectors, lists and lazy sequences are sequential collections.
Associative collections: Associative collections can be accessed by keys; maps are the natural choice here. We said that one collection can be of any type; Clojure's vectors can also be used as associative collections, and each element index can be used as a key. You can think of it as a map where the keys...