Прошел уровень по массивам, суммировал то что я понял.
Я тут выкачу сейчас свои новичковые мысли на счет массива,
мне нужно что бы те кто знают, подсказали правильно ли я все понял,
и есть ли что то, что нужно знать что бы при вопросах на том же собеседовании
меня не завалили по массивам...
писал по памяти...
Массив - структура данных(контейнер),
храннящая переменные одного типа.
- массив имеет фиксированный размер.
- индексация элементов в массиве начинается с ноля.
- что бы получить доступ к элменту
нужно обратиться к нему по индексу.
Одномерный массив.
Одномерный:
int[] array = new int[]{1,2,3,4,5}; // size = 5;
array - ccылка, типа int[].
new int[] {...} - контейнер.
1,2,3,4,5 - ccылки на значения,
то есть да фактически это значения,
но по факту когда проходимся по массиву
значения храняться в переменной array[i],
то есть ссылке, которая хранит уже само значение.
В памяти одномерный массив хранится в таком виде:
- состоит из четырех компонентов:
1. ссылка на контейнер с переменными.
2. сам контейнер.
3. однотипные переменные лежащие в контейнере
- где переменные это ссылки на значения.
4. сами значения.
Про двумерный и многомерный не буду писать там
вроде ясно, просто в контейнере при увеличении "мерности"
массива растет вложенность ссылок, то есть при 3ех мерном массиве
в контейнере будет храниться ссылка на ссылку, далее на пермеменную(сылку)
и в конце уже переменные ссылаются на значения.
Так же для работы с массивами есть методы класса Arrays.
Вообще не совсем понятно я еще методы только начал проходить,
ну и про классы знаю совсем чючють.
Есть такие основные методы:
Arrays.fill(array, value) или же array[i] = value;
Arrays.sort(array) - под капотом используеться quick sort,
хрен знает что это)) ну всм это сортировка, но я пока не работал с ними.
Arrays.binarySearch - поиск элемента в массиве,
- работает binarySearch таким образом,
после того как отсортировали массив, например темже Arrays.sort(array),
можно найти элемент, binarySearch делит массив пополам, сперва ищет
в правой стороне, затем если не находит в левой,
Если я правильно понял можно вызывать несколько раз binarySearch
что бы делить каждую половину массива еще раз и
уменьшать кол-во прохождений...
Ну и Arrays.equals(array[i], array[i + 1]), сравнивает значения.
есть еще deepEquals(...) - для двумерных и многомерных массивов.
также есть еще куча других методов в классе Arrays, c приставкой deep
то есть опять же для двумерных и многомерных массивов, т.к без
приставки будет правильно работать только для одномерных массивов.
Остольные методы я пока особо не разбирал...