LinkedList
Маркер конца (last) в двусвязных списках не содержит значимых данных, а служит вспомогательной нодой для упрощения работы со списком. Он содержит ссылки (next и prev), которые помогают управлять концами списка. last используется для упрощения операций, таких как добавление и удаление элементов, и обеспечивает единообразное завершение списка.
while(buffer != last){// Проходим до маркера концаif(i == index){return buffer.value;}
i++;
buffer = buffer.next;// Переход к следующему элементу}
HashMap
✔ containsKey() - проверяет наличие какого-то ключа
✔ containsValue() - проверяет наличие какого-то значения
✔ keySet() - получить список всех ключей. Пример ↓
// в Set могут быть только уникальные (не повторяющиеся) значенияSet<Integer> keys = passportsAndNames.keySet();
✔ values() - получить список всех значений. Пример ↓
✔ size() - возвращает число элементов в словаре на текущий момент
✔ clear() - удаляет все элементы
✔ isEmpty() - проверка, пустой ли словарь (если пустой, то вернёт true, иначе false)
✔ putAll() - скопировать все элементы из одной мапы в другую
✔ entrySet() - возвращает список всех пар словаря
Работа со строкамиРазбор методов String от FollowWRabbit
java,lang содержит 3 final класса для работы со строками:
- String
- StringBuilder
- StringBuffer
----------------
String методы:
--------------------------------Нестатические (экзмеплярные) методы объекта----------------------------------
1.str.repeat(3) - повторить строку
2. str.codePointAt(0) -> получить Unicode символа
3. str1.concat(str2) -> str1+str2
4. str.hashCode() -> вернет hashCode объекта
5. поиск подстрок в строке
8. сравнение строк
9. создание подстрок: str.replace(), str.trim(),str.substring()
(!) Можно делать в виде цепочки методов
-------------------------------------------Статические методы класса String-------------------------------------------
String.valueOf()// Преобразовать переменную в String
String.copyValueOf()//Преобразовать char[] в String</<
String.format("Age=%d, Name=%s", age, name);//Создать строку на основе данных
Как работает компиляция и исполнение Java-приложения
+ image1. Компиляция.
javac преобразует source-code in byte-code;
2. Интерпретация
JVM интерпретирует byte-code;
3. JIT-ускорение
Для ускорения работы Java-приложений, JVM использует механизм Just-In-Time компиляции, который преобразует наиболее часто выполняемые участки программы в машинный код и хранит их в памяти.
Хранение одинаковых строк, String Pool + imageВстречается в L3.6.4: Интересный нюанс сравнения строк и в статье
В Java строки, созданные с использованием двойных кавычек (например, "Это важное смс"), хранятся в памяти как объекты класса String. Когда javac обнаруживает несколько одинаковых строковых литералов в коде, он оптимизирует использование памяти, создавая только один объект String, который затем используется во всех местах, где встречается эта строка.
Это называется string pool. Этот пул строк находится в куче (heap) Java-программы, и он представляет собой механизм для повторного использования строковых литералов с целью экономии памяти. Когда вы создаете строку с помощью строкового литерала, Java сначала проверяет пул строк на наличие уже созданной строки с таким же содержимым. Если строка уже есть в пуле, Java использует ее вместо создания нового объекта.
...Только строка, созданная с помощью new...
...не попадает в String Pool: даже если ее текст полностью совпадает с такой же строкой из String Pool. То есть она попадает в отдельную область памяти как новый объект.
И каждый раз при создании нового объекта через new в памяти будет выделяться новая область, даже если текст внутри новых строк будет одинаковым!
Примечание: это можно обойти через str.intern().
- <Object>.equals() ->Arrays.equals() || Arrays.deepEquals();- <Object>.toString() ->Arrays.toString() || Arrays.deepToString(); - для сортировки Arrays.sort(); - для копирования Arrays.copyOf() || Arrays.copyOfRange()