Массивы
array · упорядоченная коллекция значений
Что это
Массив (array) — базовая структура данных: упорядоченная коллекция значений, доступ к которым идёт по индексу (обычно от 0). Есть почти в каждом языке программирования.
Синтаксис в разных языках
// JavaScript / TypeScript / JSON
[1, 2, 3, "hello", true]
# Python
[1, 2, 3, "hello", True]
// Go
[]int{1, 2, 3}
# Ruby
[1, 2, 3]
// Java
new int[]{1, 2, 3}
// C
int arr[] = {1, 2, 3};
// Rust
[1, 2, 3] // фиксированный
vec![1, 2, 3] // динамический
Доступ
arr[0] // первый элемент
arr[1] // второй
arr[-1] // последний (в Python, Ruby)
arr[arr.length - 1] // последний (в JS, Go)
Основные операции
- Длина:
arr.length(JS),len(arr)(Python, Go) - Добавить в конец:
push(JS),append(Python, Go) - Удалить из конца:
pop - Обход:
for,forEach,map,filter - Слайсы:
arr[1:3](Python),arr.slice(1, 3)(JS)
Статический vs динамический
- Статический (фиксированный) — размер задан при создании, не меняется. В C, Rust, Go. Быстрее, дешевле по памяти
- Динамический — размер меняется. В Python (list), JS (Array), Java (ArrayList), Rust (Vec), Go (slice). Под капотом — статический буфер, который переаллоцируется при переполнении
Массивы vs списки vs множества
- Массив/список — упорядочен, дубликаты разрешены, доступ по индексу O(1)
- Set (множество) — не упорядочен, дубликатов нет, поиск O(1)
- Linked list — упорядочен, доступ O(n), но вставка/удаление O(1) в известной позиции
Много размерные
// Матрица 3x3
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
matrix[1][2] // 6
Массивы в JSON
В JSON массив — второй базовый тип после объекта: ["a", "b", "c"]. Внутри могут быть любые JSON-значения (объекты, другие массивы).