# Abstract Data Type ArrayList

Learn about dynamically sized array data structures provided by Java.

## Abstract data type

The first step in designing an efficient data structure is developing an efficient mathematical model for storing the data. After that, we must choose the methods to access and modify the data. This model with the methods is called the **abstract data type (ADT)**.

Through the ADT, we address all the functionalities of the data structures; it tells us what we want to do with said data structures. However, ADT doesn’t tell us anything about the implementation process, memory management, or the algorithm we implement for the data structures.

As we said earlier, an efficient algorithm depends on efficient data structures. We might be interested in which algorithm to implement, but it’s unnecessary in the ADT stage.

For example, if we implement a dictionary ADT, we may want to implement a `search(word)`

method. At the very beginning of the project, we have to specify that, and what we’re doing in that stage is nothing but ADT.

Now, in the case of Java, a data structure for implementing an ADT is a structured set of variables for storing data. On the implementation level, an ADT corresponds to a Java interface, and the ADT data structure corresponds to a class implementing that interface.

Get hands-on with 1200+ tech skills courses.