Java for Beginner
672 subscribers
541 photos
155 videos
12 files
827 links
Канал от новичков для новичков!
Изучайте Java вместе с нами!
Здесь мы обмениваемся опытом и постоянно изучаем что-то новое!

Наш YouTube канал - https://www.youtube.com/@Java_Beginner-Dev

Наш канал на RUTube - https://rutube.ru/channel/37896292/
Download Telegram
Варианты ответа:
Anonymous Quiz
15%
1
55%
3
15%
0
15%
2
Подписывайтесь на канал, мы знаем, что делать с багами🪲🔫

https://t.me/Java_for_beginner_dev

#Mems
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 является потокобезопасным из-за своей неизменяемости. Разные потоки могут безопасно использовать один и тот же объект строки.
Использование памяти: Каждое изменение строки создает новый объект, что может привести к большому количеству временных объектов и нагрузке на сборщик мусора.


Пример использования:
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
Всем доброго летнего утра и дня!

Рассказывайте, что у Вас нового и интересного!

Сегодня я запустил публикацию небольших видео на нашем ютуб канале - https://www.youtube.com/channel/UCPIFxEy9uf_LzstTSLrjPhw!

Видео там пока одно, но я думаю совместными усилиями мы сделаем из него что-то достойное!))

#YouTube
Подписывайтесь на канал, мы знаем, бл...

https://t.me/Java_for_beginner_dev

#Mems
Подписывайтесь на канал, мы научим общению с заказчиком😏

https://t.me/Java_for_beginner_dev

#Mems
@alexlikhanov - что-то навеяло😂😂😂

#Mems
Коллекции

Коллекции в 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
Подписывайтесь на канал, иногда мы тоже приходим в офис🙈

https://t.me/Java_for_beginner_dev

#Mems
Что выведет код?

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:
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
Set, HashSet, TreeSet

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
Что выведет код?

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
Подписывайтесь на канал, научим быть причиной🪲

https://t.me/Java_for_beginner_dev

#Mems
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:
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