Курсы по Java для новичков
675 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
👍3
🔥24👍4😍32
Друзья! Последняя неделя была посвящена небольшому отпуску в Польше. Варшава, Гданьск, Торунь.  Встреча с младшим сыном и его семьёй, общение и новые впечатления. Всем желаю хорошей семьи и маленьких радостей в жизни!
19🔥8😍3
class Student {
String name;

Student(String name) {
this.name = name;
}
}

public class Main {
public static void main(String[] args) {
Map<Student, Integer> map = new TreeMap<>();

map.put(new Student("Alice"), 1);
map.put(new Student("Alice"), 2);

System.out.println(map.size());
}
}
👍3
Что будет выведено на консоль?
Anonymous Quiz
29%
1
49%
2
18%
Runtime Error
4%
Ошибка компиляции
Как работает TreeMap в Java? 🌳

🔹 TreeMap — это реализация Map, которая хранит ключи в отсортированном порядке.

Но важно понять главное:

📌 Порядок задаётся не equals(), а сравнением:
— через compareTo() (если ключ реализует Comparable)
— или через Comparator, переданный в конструктор

Именно результат сравнения определяет:
— где хранится элемент
— считается ли ключ «тем же самым»

Если compareTo() возвращает 0 — ключи считаются одинаковыми, и значение перезапишется.

⚙️ Под капотом:
TreeMap построен на красно-чёрном дереве, поэтому:
— добавление, удаление, поиск → O(log n)
— элементы всегда отсортированы

💡 Важный момент:
equals() для TreeMap не обязателен,
но лучше, чтобы он был согласован с compareTo() — иначе можно получить неожиданные баги.
🔥1
import java.util.*;

class Person {
String name;

Person(String name) {
this.name = name;
}
}

public class Main {
public static void main(String[] args) {
TreeMap<Person, Integer> map = new TreeMap<>(Comparator.comparing(p -> p.name));

Person p1 = new Person("Alice");
Person p2 = new Person("Alice");

map.put(p1, 1);
map.put(p2, 2);

System.out.println(map.get(p1));
}
}
Что будет выведено на консоль?
Anonymous Quiz
50%
1
44%
2
3%
Runtime Error
3%
Ошибка компиляции
👍2
HashMap vs TreeMap в Java — в чём разница? 🤔

Обе структуры реализуют интерфейс Map, но ведут себя по-разному:

🔹 HashMap
— Быстрая работа (в среднем O(1))
— Не хранит порядок элементов
— Основан на хеш-таблице
📌 Ключи должны корректно реализовывать equals() и hashCode()

🔹 TreeMap
— Медленнее (O(log n))
— Хранит элементы отсортированными по ключу
— Основан на красно-чёрном дереве
📌 Ключи должны быть сравнимы: реализовывать Comparable (compareTo())
или передаваться с Comparator

📌 Когда что использовать?
— Нужна максимальная скорость → HashMap
— Нужна сортировка или диапазоны (например, от key1 до key2) → TreeMap

💡 Лайфхак: если порядок важен, но сортировка не нужна — посмотри ещё на LinkedHashMap.
2👍1
Как проще всего вывести содержимое Map на консоль? 🤔
Есть несколько способов, но вот самые удобные и читаемые:
🔹 1. Самый ленивый способ — просто println
System.out.println(myMap);

Работает из коробки!
Java сама выведет пары в формате:
{key1=value1, key2=value2, key3=value3}
✔️ Отлично подходит для быстрой отладки.
🔹 2. Через цикл for-each и entrySet() (классический вариант):
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}

✔️ Плюс: есть доступ и к ключу, и к значению
✔️ Минус: чуть больше кода
🔹 3. Используя метод forEach() интерфейса Map (начиная с Java 8):
map.forEach((key, value) -> 
System.out.println(key + " = " + value)
);

✔️ Плюс: максимально кратко и современно
✔️ Минус: может быть непривычно новичкам
👍4
“Зачем Вы нам даете тесты по Map?
Мы ведь до этой темы еще не дошли… “ - так, вероятно, скажут те, кто еще изучает “Основы языка Java” или “ООП”.
Да, для Вас приводимый код кажется странным и непонятным. И это нормально!
А я просто хочу привлечь внимание к своему курсу “Прокачай Java😊 В нем тема коллекций Java разбирается подробно, но без перегруза.
🤓 А также темы про ввод-вывод, многопоточность, регулярки, лямбда-выражения и Streams…
Тем более, что скоро грядет большая распродажа курсов на Степик. На этот курс будет скидка 20%.
Так что ждем начала распродажи 27 мая, и начинаем разбираться с Map! 💥
🔥52
class A {
int x = 5;
}

public class Main {
public static void main(String[] args) {
A a1 = new A();
A a2 = a1;
a2.x = 10;
System.out.println(a1.x);
}
}
Что будет выведено на консоль?
Anonymous Quiz
27%
5
56%
10
9%
null
9%
Ошибка компиляции
👍1
Повышаю цену на курс "Основы языка Java" 🥲
По рекомендации команды Степика я решила поднять цену на курс "Основы языка Java". Они считают, что низкая цена отпугивает подозрением на низкое качество 🤷‍♂️.
Но для Вас я зафиксировала прежнюю цену до конца июня.
Вы, конечно, уже прошли (или проходите) этот курс. Но, возможно, захотите подарить его кому-то :) Так что вот ссылка с вшитым промокодом: https://stepik.org/a/124803/pay?promo=c2f50a4565593edb
👍5
class A {
void print() {
System.out.println("A");
}
}

class B extends A {
void print(int x) {
System.out.println("B");
}
}

public class Main {
public static void main(String[] args) {
A obj = new B();
obj.print();
}
}
Что будет выведено на консоль?
Anonymous Quiz
44%
A
40%
B
15%
Ошибка компиляции
2%
Runtime Error
👍4
Переопределение vs Перегрузка в Java — в чем разница? 🤔
Эти два термина часто путают, хотя они про совершенно разные вещи.
🔹 Перегрузка (Overloading)
Это когда есть несколько методов с одинаковым именем, но разными параметрами.
✔️ Решается на этапе компиляции
✔️ Отличается сигнатура методов (параметры)
✔️ Используется для удобства и читаемости кода
🔹 Переопределение (Overriding)
Это когда подкласс изменяет поведение метода родительского класса.
✔️ Работает на этапе выполнения (runtime)
✔️ Требует наследования
✔️ Сигнатура метода должна совпадать
✔️ Позволяет реализовать полиморфизм
🔥43
Скоро-скоро весенне-летняя распродажа курсов на Степике!
✔️С 27 мая по 9 июня на все мои курсы будет скидка 20%. Если хотите добавить себе новые знания и навыки – это само время!
✔️Курсы выстроены в логическую цепочку: “Основы языка Java” -> “Объектно – ориентированное программирование на Java” -> “Прокачай Java”.
👌В итоге – знания Java Core на уровне junior . Как видите, звезд с неба и позицию senior не обещаю. Но твердую базу для дальнейшего развития – да!
2
class Test {
static int x = 5;

static void change(int x) {
x = x + 10;
}

public static void main(String[] args) {
change(x);
System.out.println(x);
}
}
Что будет выведено на консоль?
Anonymous Quiz
35%
5
46%
15
2%
10
17%
Ошибка компиляции
Вчера стартовала летняя распродажа на Stepik 🔥
Если давно хотели прокачать навыки по Java — сейчас хороший момент: до 9 июня на платформе действуют скидки на множество курсов по программированию.
Мои курсы тоже участвуют 🙌
Co скидкой 20% (самой большой в году!) можно приобрести:

— “Основы языка Java” – курс для полных новичков в этом языке;
— “Объектно – ориентированное программирование на Java” – следующий курс, который научит понимать принципы ООП и воплощать их в своем коде;
— “Прокачай Java” – курс, который завершает линейку изучения Java Core. Он посвящен изучению стандартных классов, а также современным возможностям Java.
👍4