1) Массив
int arr[] = new int[n];
String arr[] = new String[n];
Переменной длины:
List<Integer> arr = new ArrayList<>();
2) Стэк
Stack<Integer> stack = new Stack<>();
3) Очередь
Queue<String> queue = new ArrayDeque<>();
Queue<String> queue = new LinkedList<>();
4) Хэш-таблица
Map<String, String> map = new HashMap<>();
5) Хэш-сет
Set<String> set = new HashSet<>();
6) Heap(Куча/PriorityQueue)
PriorityQueue<String> queue = new PriorityQueue<>();
7) Список
Предполагать, что уже есть класс Node с полями val, next.
Если список двусвязный, то есть еще prev.
8) Бинарное дерево
Предполагать, что уже есть класс TreeNode с полями val, left, right
9) Граф
Часто граф в задаче - это двумерная матрица, поэтому ничего дополнительного объявлять не нужно.
Списки смежности:
Map<Node, List<Node>> graph = new HashMap<>();
Ключ - это вершина (иногда, это может быть String, Integer и т.д.)
List<Node> - список смежных вершин.
Матрица смежности:
boolean graph[][] = new boolean[n][n];
graph[u][v] == true, если есть ребро u->v
Объектно-ориентированные подход:
Считать, что есть класс Node, с полем val и методом
pubic List<Node> getNeighbors();
Смотри также Шпаргалка по Java для алгоритмического собеседования