# Collection
## What is a Collection? - Various implementations exist based on the `List`, `Map`, and `Set` interfaces - `Reasons for use` - Because `standardized classes` are provided for handling large amounts of data, you can use them conveniently without directly implementing DataStructures - Unlike arrays, `you don't need to pre-define the space for storing objects`, so the `number of objects can be determined dynamically` based on the situation - This also improves the spatial efficiency of the program
## Types of Collections ### List - The `List` interface can be directly defined and used by the user through `@Override`, and the representative implementation is `ArrayList`. - This is an improvement of the existing `Vector` - `LinkedList` - A data structure that stores data in a manner where each node has data and a pointer, connected in a single line - Nodes containing data are connected, and the node's pointer is responsible for the connection to the next or previous node - `Advantages` - Adding/removing data at the middle of the lined-up nodes is possible in `O(1)` time - `Disadvantages` - Unlike arrays or tree structures, searching for data at a specific position takes `O(n)` time
### Map - The representative implementation is `HashMap` - It has a `key-value` structure, and the specific details about Map are consistent with the `hashtable` in the DataStructure section - `Duplicate values are not stored` based on the key, and `order is not guaranteed` - To guarantee order for keys, use `LinkedHashMap`
### Set - The representative implementation is `HashSet`. - Duplicate values for `value` are not stored - In fact, the Set data structure is simply a data structure where the value is used as the key, replacing the key in the Map's key-value structure - Likewise, order is not guaranteed, and `LinkedHashSet` is used to guarantee order