| Concept | Description | Examples (extra) |
|---|---|---|
| Type | A set of values | float, double, string, byte |
| Data Type | Values + valid operations | float → +, -, /, *, %string → concatenation (+), substring, lengthboolean → AND, OR, NOT |
| Abstract Data Type (ADT) | Defines behavior (what it does) without saying how | Stack → LIFO (Last In, First Out) |
Queue → FIFO (First In, First Out) |
||
List → ordered collection of elements |
||
Set → no duplicates, unordered |
||
Map / Dictionary → key–value pairs |
||
Graph → nodes + edges |
||
Tree → hierarchical structure (root, children) |
||
| Data Structure | The actual implementation of an ADT (how it’s stored and works in memory)** | Stack implemented with ArrayList or LinkedListQueue implemented with circular array or linked list |
List → ArrayList, |
||
LinkedListSet → HashSet, |
||
TreeSetMap → HashMap, |
||
TreeMapGraph → adjacency list or matrix |
||
Tree → binary tree, AVL, B-tree |

Finding the same word in diferent lists:
(how to?)
Same date, same amount, diferent aproach - makes things easier or harder.


For example, Java has the primitive type int and the class Java.lang.Integer which contains operations to manipulate values, such as converting them to strings
Data Types in Programming - GeeksforGeeks
Mathematical model of a data type, where it is defined by its behavior from the point of view of a user in terms of values, operations on the values, and the behavior of the operations
Its adaptable, it changes - you define it by how it behavior.
When your data changes, the structure changes too.