Forwarded from CRYPTON Tech
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Разница между String, StringBuilder и StringBuffer
Строки (String)
Неизменяемость: Объекты класса String неизменяемы. После создания строки, её содержимое не может быть изменено.
Потокобезопасность: String является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.
Пример использования:
StringBuilder
Изменяемость: Объекты класса StringBuilder изменяемы. Можно изменять содержимое объекта без создания новых объектов.
Потокобезопасность: StringBuilder не является потокобезопасным. Он не синхронизирован, что делает его быстрым, но небезопасным для использования в многопоточных средах.
Использование памяти: StringBuilder более эффективен с точки зрения использования памяти при частых изменениях строк, так как не создает множество временных объектов.
Пример использования:
StringBuffer
Изменяемость: Объекты класса StringBuffer изменяемы, как и StringBuilder.
Потокобезопасность: StringBuffer является потокобезопасным. Он синхронизирован, что делает его безопасным для использования в многопоточных средах, но более медленным по сравнению с StringBuilder.
Использование памяти: StringBuffer эффективен с точки зрения использования памяти при частых изменениях строк в многопоточных приложениях.
Пример использования:
Сравнение производительности
String: Создание новых объектов при каждом изменении строки делает String менее эффективным при частых изменениях.
StringBuilder: Не синхронизирован и поэтому быстрее, чем StringBuffer, при работе в однопоточных приложениях.
StringBuffer: Синхронизирован и, следовательно, медленнее, чем StringBuilder, но безопасен для использования в многопоточных приложениях.
Когда использовать каждый из классов?
String: Используйте String, когда строки неизменяемы или изменения редки. Подходит для констант и неизменяемых текстовых данных.
StringBuilder: Используйте StringBuilder, когда строки часто изменяются и безопасность потоков не является проблемой. Подходит для однопоточных приложений.
StringBuffer: Используйте StringBuffer, когда строки часто изменяются и требуется безопасность потоков. Подходит для многопоточных приложений.
Примеры использования:
String:
StringBuilder:
StringBuffer:
#Java #Training #String
Строки (String)
Неизменяемость: Объекты класса String неизменяемы. После создания строки, её содержимое не может быть изменено.
Потокобезопасность: String является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.
Пример использования:
String str = "Hello";
str = str + ", World!"; // Создается новый объект строки
StringBuilder
Изменяемость: Объекты класса StringBuilder изменяемы. Можно изменять содержимое объекта без создания новых объектов.
Потокобезопасность: StringBuilder не является потокобезопасным. Он не синхронизирован, что делает его быстрым, но небезопасным для использования в многопоточных средах.
Использование памяти: StringBuilder более эффективен с точки зрения использования памяти при частых изменениях строк, так как не создает множество временных объектов.
Пример использования:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменяется текущий объект sb
StringBuffer
Изменяемость: Объекты класса StringBuffer изменяемы, как и StringBuilder.
Потокобезопасность: StringBuffer является потокобезопасным. Он синхронизирован, что делает его безопасным для использования в многопоточных средах, но более медленным по сравнению с StringBuilder.
Использование памяти: StringBuffer эффективен с точки зрения использования памяти при частых изменениях строк в многопоточных приложениях.
Пример использования:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменяется текущий объект sb
Сравнение производительности
String: Создание новых объектов при каждом изменении строки делает String менее эффективным при частых изменениях.
StringBuilder: Не синхронизирован и поэтому быстрее, чем StringBuffer, при работе в однопоточных приложениях.
StringBuffer: Синхронизирован и, следовательно, медленнее, чем StringBuilder, но безопасен для использования в многопоточных приложениях.
Когда использовать каждый из классов?
String: Используйте String, когда строки неизменяемы или изменения редки. Подходит для констант и неизменяемых текстовых данных.
StringBuilder: Используйте StringBuilder, когда строки часто изменяются и безопасность потоков не является проблемой. Подходит для однопоточных приложений.
StringBuffer: Используйте StringBuffer, когда строки часто изменяются и требуется безопасность потоков. Подходит для многопоточных приложений.
Примеры использования:
String:
String str = "Hello";
str = str + ", World!"; // Создание нового объекта
StringBuilder:
StringBuilder sb = new StringBuilder("Hello");
sb.append(", World!"); // Изменение текущего объекта
StringBuffer:
StringBuffer sb = new StringBuffer("Hello");
sb.append(", World!"); // Изменение текущего объекта
#Java #Training #String
Станем ли мы и дальше организовывать встречи по выходным? И когда Вам удобнее?
Anonymous Poll
53%
Да! Я присоединюсь в любой день!
7%
Да, но мне удобнее по субботам
20%
Да, но мне удобнее по воскресениям
20%
Я не смогу прийти, хотя полностью за!
0%
Ерундой страдаете!
Всем доброго летнего утра и дня!
Рассказывайте, что у Вас нового и интересного!
Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!
Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))
#YouTube
Рассказывайте, что у Вас нового и интересного!
Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!
Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))
#YouTube
Коллекции
Коллекции в Java — это набор классов и интерфейсов, которые предназначены для хранения и управления группами объектов. Коллекции позволяют легко манипулировать группами данных, предоставляя методы для добавления, удаления, поиска и сортировки элементов.
Основные интерфейсы коллекций
Collection
Родительский интерфейс для большинства коллекций.
Основные методы: add(), remove(), size(), contains(), iterator().
List
Упорядоченная коллекция, допускающая дублирование элементов.
Основные реализации: ArrayList, LinkedList, Vector.
Set
Коллекция, не допускающая дублирование элементов.
Основные реализации: HashSet, LinkedHashSet, TreeSet.
Queue
Коллекция, предназначенная для хранения элементов перед их обработкой.
Основные реализации: LinkedList, PriorityQueue.
Map
Коллекция, хранящая пары ключ-значение.
Основные реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
Основные методы коллекций
add(E element): добавляет элемент в коллекцию.
remove(Object o): удаляет элемент из коллекции.
size(): возвращает количество элементов в коллекции.
contains(Object o): проверяет, содержит ли коллекция указанный элемент.
iterator(): возвращает итератор для перебора элементов коллекции.
Итераторы
Итераторы позволяют проходить по элементам коллекции:
Generics в коллекциях
Использование generics позволяет коллекциям работать с определенным типом данных:
Гибкость: коллекции позволяют хранить произвольное количество объектов.
Удобство: коллекции предоставляют мощные методы для работы с данными.
Производительность: коллекции оптимизированы для различных операций, таких как добавление, удаление и поиск элементов.
#Java #Training #Collections
Коллекции в Java — это набор классов и интерфейсов, которые предназначены для хранения и управления группами объектов. Коллекции позволяют легко манипулировать группами данных, предоставляя методы для добавления, удаления, поиска и сортировки элементов.
Основные интерфейсы коллекций
Collection
Родительский интерфейс для большинства коллекций.
Основные методы: add(), remove(), size(), contains(), iterator().
List
Упорядоченная коллекция, допускающая дублирование элементов.
Основные реализации: ArrayList, LinkedList, Vector.
Set
Коллекция, не допускающая дублирование элементов.
Основные реализации: HashSet, LinkedHashSet, TreeSet.
Queue
Коллекция, предназначенная для хранения элементов перед их обработкой.
Основные реализации: LinkedList, PriorityQueue.
Map
Коллекция, хранящая пары ключ-значение.
Основные реализации: HashMap, LinkedHashMap, TreeMap, Hashtable.
Основные методы коллекций
add(E element): добавляет элемент в коллекцию.
remove(Object o): удаляет элемент из коллекции.
size(): возвращает количество элементов в коллекции.
contains(Object o): проверяет, содержит ли коллекция указанный элемент.
iterator(): возвращает итератор для перебора элементов коллекции.
Итераторы
Итераторы позволяют проходить по элементам коллекции:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
Generics в коллекциях
Использование generics позволяет коллекциям работать с определенным типом данных:
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
// list.add(1); // Ошибка компиляции, так как list предназначен для хранения только строк.
Преимущества использования коллекций
Гибкость: коллекции позволяют хранить произвольное количество объектов.
Удобство: коллекции предоставляют мощные методы для работы с данными.
Производительность: коллекции оптимизированы для различных операций, таких как добавление, удаление и поиск элементов.
#Java #Training #Collections
Варианты ответа:
Anonymous Quiz
33%
[10, 15, 25, 30]
0%
[10, 25, 30]
7%
[10, 15, 20, 25]
60%
[10, 15, 25]
Что выведет код?
#Tasks
import java.util.ArrayList;
import java.util.List;
public class ArrayListExample {
public static void main(String[] args) {
List<Integer> numbers = new ArrayList<>();
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(1, 15);
numbers.set(2, 25);
numbers.remove(3);
System.out.println(numbers);
}
}
#Tasks
List, ArrayList, LinkedList
List
List — это интерфейс в Java, представляющий упорядоченную коллекцию, допускающую дублирование элементов. Основные реализации интерфейса List включают ArrayList и LinkedList.
ArrayList
ArrayList — это класс, реализующий интерфейс List, основанный на динамическом массиве. Он предоставляет быстрый доступ к элементам по индексу и эффективен для операций добавления и удаления элементов в конце списка.
Основные методы ArrayList
Создание ArrayList:
Добавление элементов:
Доступ по индексу:
Изменение элемента:
Удаление элемента:
Размер списка:
Перебор элементов:
LinkedList
LinkedList — это класс, реализующий интерфейс List, основанный на двусвязном списке. Он предоставляет эффективное добавление и удаление элементов в середине списка, но доступ по индексу медленнее по сравнению с ArrayList.
Основные методы LinkedList
Создание LinkedList:
Добавление элементов:
Доступ по индексу:
Изменение элемента:
Удаление элемента:
Размер списка:
Перебор элементов:
Сравнение ArrayList и LinkedList
Структура данных:
ArrayList основан на динамическом массиве.
LinkedList основан на двусвязном списке.
Доступ по индексу:
ArrayList обеспечивает быстрый доступ по индексу (O(1)).
LinkedList медленнее при доступе по индексу (O(n)).
Добавление и удаление элементов:
ArrayList быстрее добавляет и удаляет элементы в конце списка (O(1)).
LinkedList быстрее добавляет и удаляет элементы в середине списка (O(1) для добавления/удаления с начала/конца, O(n) для доступа по индексу).
Использование памяти:
ArrayList использует меньше памяти, так как хранит элементы в массиве.
LinkedList использует больше памяти из-за хранения ссылок на предыдущий и следующий элементы.
#Java #Training #Collections
List
List — это интерфейс в Java, представляющий упорядоченную коллекцию, допускающую дублирование элементов. Основные реализации интерфейса List включают ArrayList и LinkedList.
ArrayList
ArrayList — это класс, реализующий интерфейс List, основанный на динамическом массиве. Он предоставляет быстрый доступ к элементам по индексу и эффективен для операций добавления и удаления элементов в конце списка.
Основные методы ArrayList
Создание ArrayList:
List<String> arrayList = new ArrayList<>();
Добавление элементов:
arrayList.add("Apple");
arrayList.add("Banana");
arrayList.add("Orange");
Доступ по индексу:
String fruit = arrayList.get(0); // "Apple"
Изменение элемента:
arrayList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"
Удаление элемента:
arrayList.remove(0); // Удаляет "Apple"
Размер списка:
int size = arrayList.size(); // 2
Перебор элементов:
for (String fruit : arrayList) {
System.out.println(fruit);
}
LinkedList
LinkedList — это класс, реализующий интерфейс List, основанный на двусвязном списке. Он предоставляет эффективное добавление и удаление элементов в середине списка, но доступ по индексу медленнее по сравнению с ArrayList.
Основные методы LinkedList
Создание LinkedList:
List<String> linkedList = new LinkedList<>();
Добавление элементов:
linkedList.add("Apple");
linkedList.add("Banana");
linkedList.add("Orange");
Доступ по индексу:
String fruit = linkedList.get(0); // "Apple"
Изменение элемента:
linkedList.set(1, "Grapes"); // Изменяет "Banana" на "Grapes"
Удаление элемента:
linkedList.remove(0); // Удаляет "Apple"
Размер списка:
int size = linkedList.size(); // 2
Перебор элементов:
for (String fruit : linkedList) {
System.out.println(fruit);
}
Сравнение ArrayList и LinkedList
Структура данных:
ArrayList основан на динамическом массиве.
LinkedList основан на двусвязном списке.
Доступ по индексу:
ArrayList обеспечивает быстрый доступ по индексу (O(1)).
LinkedList медленнее при доступе по индексу (O(n)).
Добавление и удаление элементов:
ArrayList быстрее добавляет и удаляет элементы в конце списка (O(1)).
LinkedList быстрее добавляет и удаляет элементы в середине списка (O(1) для добавления/удаления с начала/конца, O(n) для доступа по индексу).
Использование памяти:
ArrayList использует меньше памяти, так как хранит элементы в массиве.
LinkedList использует больше памяти из-за хранения ссылок на предыдущий и следующий элементы.
#Java #Training #Collections
Forwarded from English Beginners
Set, HashSet, TreeSet
Set
Set — это интерфейс в Java, представляющий коллекцию, которая не допускает дублирование элементов. Set обеспечивает хранение уникальных элементов, что полезно в случаях, когда важно отсутствие повторяющихся значений.
Основные реализации интерфейса Set:
HashSet
TreeSet
LinkedHashSet (реализует упорядоченный по порядку добавления Set)
HashSet
HashSet — это класс, реализующий интерфейс Set, основанный на хеш-таблице. Он не гарантирует упорядоченность элементов и допускает null значения.
Основные характеристики HashSet:
Неупорядоченность: Порядок элементов не гарантируется и может изменяться.
Эффективность: Основные операции (вставка, удаление, проверка наличия) выполняются за постоянное время (O(1)).
Уникальность: Не допускает дублирование элементов.
Основные методы HashSet:
Создание HashSet:
Добавление элементов:
Удаление элементов:
Проверка наличия элемента:
Размер множества:
Перебор элементов:
TreeSet
TreeSet — это класс, реализующий интерфейс Set, основанный на красно-черном дереве. Он гарантирует естественный порядок элементов или порядок, заданный компаратором.
Основные характеристики TreeSet:
Упорядоченность: Элементы хранятся в отсортированном порядке.
Эффективность: Основные операции (вставка, удаление, проверка наличия) выполняются за логарифмическое время (O(log n)).
Уникальность: Не допускает дублирование элементов.
Основные методы TreeSet:
Создание TreeSet:
Добавление элементов:
Удаление элементов:
Проверка наличия элемента:
Размер множества:
Перебор элементов:
Получение первого и последнего элемента:
Подмножества:
Сравнение HashSet и TreeSet
Структура данных:
HashSet основан на хеш-таблице.
TreeSet основан на красно-черном дереве.
Упорядоченность:
HashSet не гарантирует упорядоченности элементов.
TreeSet хранит элементы в отсортированном порядке.
Эффективность:
HashSet выполняет основные операции за постоянное время (O(1)).
TreeSet выполняет основные операции за логарифмическое время (O(log n)).
Использование памяти:
HashSet обычно использует меньше памяти, так как не хранит информацию о порядке элементов.
TreeSet использует больше памяти из-за хранения информации о порядке.
#Java #Training #Collections
Set
Set — это интерфейс в Java, представляющий коллекцию, которая не допускает дублирование элементов. Set обеспечивает хранение уникальных элементов, что полезно в случаях, когда важно отсутствие повторяющихся значений.
Основные реализации интерфейса Set:
HashSet
TreeSet
LinkedHashSet (реализует упорядоченный по порядку добавления Set)
HashSet
HashSet — это класс, реализующий интерфейс Set, основанный на хеш-таблице. Он не гарантирует упорядоченность элементов и допускает null значения.
Основные характеристики HashSet:
Неупорядоченность: Порядок элементов не гарантируется и может изменяться.
Эффективность: Основные операции (вставка, удаление, проверка наличия) выполняются за постоянное время (O(1)).
Уникальность: Не допускает дублирование элементов.
Основные методы HashSet:
Создание HashSet:
Set<String> hashSet = new HashSet<>();
Добавление элементов:
hashSet.add("Apple");
hashSet.add("Banana");
hashSet.add("Orange");
Удаление элементов:
hashSet.remove("Banana");
Проверка наличия элемента:
boolean containsApple = hashSet.contains("Apple"); // true
Размер множества:
int size = hashSet.size(); // 2
Перебор элементов:
for (String fruit : hashSet) {
System.out.println(fruit);
}
TreeSet
TreeSet — это класс, реализующий интерфейс Set, основанный на красно-черном дереве. Он гарантирует естественный порядок элементов или порядок, заданный компаратором.
Основные характеристики TreeSet:
Упорядоченность: Элементы хранятся в отсортированном порядке.
Эффективность: Основные операции (вставка, удаление, проверка наличия) выполняются за логарифмическое время (O(log n)).
Уникальность: Не допускает дублирование элементов.
Основные методы TreeSet:
Создание TreeSet:
Set<String> treeSet = new TreeSet<>();
Добавление элементов:
treeSet.add("Apple");
treeSet.add("Banana");
treeSet.add("Orange");
Удаление элементов:
treeSet.remove("Banana");
Проверка наличия элемента:
boolean containsApple = treeSet.contains("Apple"); // true
Размер множества:
int size = treeSet.size(); // 2
Перебор элементов:
for (String fruit : treeSet) {
System.out.println(fruit);
}
Получение первого и последнего элемента:
String first = treeSet.first(); // "Apple"
String last = treeSet.last(); // "Orange"
Подмножества:
SortedSet<String> subSet = treeSet.subSet("Apple", "Orange");
Сравнение HashSet и TreeSet
Структура данных:
HashSet основан на хеш-таблице.
TreeSet основан на красно-черном дереве.
Упорядоченность:
HashSet не гарантирует упорядоченности элементов.
TreeSet хранит элементы в отсортированном порядке.
Эффективность:
HashSet выполняет основные операции за постоянное время (O(1)).
TreeSet выполняет основные операции за логарифмическое время (O(log n)).
Использование памяти:
HashSet обычно использует меньше памяти, так как не хранит информацию о порядке элементов.
TreeSet использует больше памяти из-за хранения информации о порядке.
#Java #Training #Collections
Что выведет код?
#Tasks
public class ComparisonOperatorsExample {
public static void main(String[] args) {
int x = 5;
int y = 10;
int z = 15;
boolean result1 = (x < y) && (y < z);
boolean result2 = (x > y) || (y < z);
boolean result3 = !(z <= x);
boolean result4 = (x + y) == z;
boolean result5 = (z - x) != y;
System.out.println(result1 + " " + result2 + " " + result3 + " " + result4 + " " + result5);
}
}
#Tasks
Варианты ответа:
Anonymous Quiz
8%
true true true true true
69%
true true true true false
8%
true false false true true
15%
true true false true false
Map, HashMap, TreeMap
Map
Map — это интерфейс в Java, представляющий коллекцию пар "ключ-значение". Map не допускает дублирование ключей, но позволяет дублирование значений. Основные реализации интерфейса Map включают HashMap и TreeMap.
Основные реализации интерфейса Map:
HashMap
TreeMap
LinkedHashMap (реализует упорядоченный по порядку добавления Map)
Hashtable (устаревшая, но синхронизированная версия Map)
HashMap
HashMap — это класс, реализующий интерфейс Map, основанный на хеш-таблице. Он не гарантирует упорядоченность ключей и допускает null значения для ключей и значений.
Основные характеристики HashMap:
Неупорядоченность: Порядок ключей не гарантируется и может изменяться.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за постоянное время (O(1)).
Уникальность ключей: Не допускает дублирование ключей.
Основные методы HashMap:
Создание HashMap:
Добавление пар ключ-значение:
Получение значения по ключу:
Удаление пары по ключу:
Проверка наличия ключа:
Размер карты:
Перебор пар ключ-значение:
TreeMap
TreeMap — это класс, реализующий интерфейс Map, основанный на красно-черном дереве. Он гарантирует естественный порядок ключей или порядок, заданный компаратором.
Основные характеристики TreeMap:
Упорядоченность: Ключи хранятся в отсортированном порядке.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за логарифмическое время (O(log n)).
Уникальность ключей: Не допускает дублирование ключей.
Основные методы TreeMap:
Создание TreeMap:
Добавление пар ключ-значение:
Получение значения по ключу:
Удаление пары по ключу:
Проверка наличия ключа:
Размер карты:
Перебор пар ключ-значение:
Получение первого и последнего ключа:
Подкарты:
Сравнение HashMap и TreeMap
Структура данных:
HashMap основан на хеш-таблице.
TreeMap основан на красно-черном дереве.
Упорядоченность:
HashMap не гарантирует упорядоченности ключей.
TreeMap хранит ключи в отсортированном порядке.
Эффективность:
HashMap выполняет основные операции за постоянное время (O(1)).
TreeMap выполняет основные операции за логарифмическое время (O(log n)).
Использование памяти:
HashMap обычно использует меньше памяти, так как не хранит информацию о порядке ключей.
TreeMap использует больше памяти из-за хранения информации о порядке.
#Java #Training #Collections
Map
Map — это интерфейс в Java, представляющий коллекцию пар "ключ-значение". Map не допускает дублирование ключей, но позволяет дублирование значений. Основные реализации интерфейса Map включают HashMap и TreeMap.
Основные реализации интерфейса Map:
HashMap
TreeMap
LinkedHashMap (реализует упорядоченный по порядку добавления Map)
Hashtable (устаревшая, но синхронизированная версия Map)
HashMap
HashMap — это класс, реализующий интерфейс Map, основанный на хеш-таблице. Он не гарантирует упорядоченность ключей и допускает null значения для ключей и значений.
Основные характеристики HashMap:
Неупорядоченность: Порядок ключей не гарантируется и может изменяться.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за постоянное время (O(1)).
Уникальность ключей: Не допускает дублирование ключей.
Основные методы HashMap:
Создание HashMap:
Map<String, Integer> hashMap = new HashMap<>();
Добавление пар ключ-значение:
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
hashMap.put("Orange", 3);
Получение значения по ключу:
int value = hashMap.get("Apple"); // 1
Удаление пары по ключу:
hashMap.remove("Banana");
Проверка наличия ключа:
boolean containsKey = hashMap.containsKey("Apple"); // true
Размер карты:
int size = hashMap.size(); // 2
Перебор пар ключ-значение:
for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
TreeMap
TreeMap — это класс, реализующий интерфейс Map, основанный на красно-черном дереве. Он гарантирует естественный порядок ключей или порядок, заданный компаратором.
Основные характеристики TreeMap:
Упорядоченность: Ключи хранятся в отсортированном порядке.
Эффективность: Основные операции (вставка, удаление, получение) выполняются за логарифмическое время (O(log n)).
Уникальность ключей: Не допускает дублирование ключей.
Основные методы TreeMap:
Создание TreeMap:
Map<String, Integer> treeMap = new TreeMap<>();
Добавление пар ключ-значение:
treeMap.put("Apple", 1);
treeMap.put("Banana", 2);
treeMap.put("Orange", 3);
Получение значения по ключу:
int value = treeMap.get("Apple"); // 1
Удаление пары по ключу:
treeMap.remove("Banana");
Проверка наличия ключа:
boolean containsKey = treeMap.containsKey("Apple"); // true
Размер карты:
int size = treeMap.size(); // 2
Перебор пар ключ-значение:
for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
Получение первого и последнего ключа:
String firstKey = treeMap.firstKey(); // "Apple"
String lastKey = treeMap.lastKey(); // "Orange"
Подкарты:
SortedMap<String, Integer> subMap = treeMap.subMap("Apple", "Orange");
Сравнение HashMap и TreeMap
Структура данных:
HashMap основан на хеш-таблице.
TreeMap основан на красно-черном дереве.
Упорядоченность:
HashMap не гарантирует упорядоченности ключей.
TreeMap хранит ключи в отсортированном порядке.
Эффективность:
HashMap выполняет основные операции за постоянное время (O(1)).
TreeMap выполняет основные операции за логарифмическое время (O(log n)).
Использование памяти:
HashMap обычно использует меньше памяти, так как не хранит информацию о порядке ключей.
TreeMap использует больше памяти из-за хранения информации о порядке.
#Java #Training #Collections