Курсы по Java для новичков
675 subscribers
66 photos
1 video
4 files
73 links
Я Оксана Еськова - преподаватель Вуза с 20-летним стажем.
Научу писать код на Java c нуля.
Курсы c автоматической проверкой задач: https://stepik.org/users/23008752
Все вопросы сюда 👉 @aksana_yaskova
Download Telegram
🔹 Как работает Set в Java?
Set — это коллекция, в которой не может быть дубликатов. Добавили одинаковый объект дважды? Второй раз просто проигнорируется.
Но как Java это понимает? 🤔
Всё держится на двух методах класса, объекты которого вы кладёте в Set:
equals() — проверяет, равны ли объекты
hashCode() — определяет, в какую «корзину» (ячейку хеш-таблицы) попадёт объект
📌 Как это работает:
1. Сначала вычисляется hashCode() и определяется индекс корзины. В ней хранятся объекты в виде списка или дерева.
2. Java перебирает элементы корзины и вызывает equals() для сравнения с новым объектом
3. Если равный объект найден — новый не добавится. Если нет — объект добавляется в корзину
💡 Важно:
equals() и hashCode() нужно переопределять вместе — и по одному принципу.
Например, если студенты считаются равными по фамилии (игнорируем год рождения и средний балл), то и hashCode() должен вычисляться только по фамилии.

А задачи на использование множества вы найдёте в курсе «Прокачай Java» — и до конца месяца там действует скидка 15% 😉
6
Свежие отзывы на курс "Основы языка Java":
Шикарный курс, гораздо лучше аналогов известных платформ с бесплатными частями для изучения!!! Материал изложен понятно. Очень радует количество задачек и особенно наборы входных параметров в них, которые каждый раз пытаются тебя подловить на неочевидных нюансах, которые не ожидаешь, но могут попасть на входе и все испортить. В целом нужна практика, практика и практика. Было бы неплохо еще какой-нибудь задачник отдельно выпустить для тренировки навыков уже после прохождения самого курса.

Стася Грозная 11 дней назад
Решил изучать Java после Python! Пробовал несколько других курсов от хороших преподавателей, но все казались переусложненными, либо слишком подробными, что тормозило обучение. Нашел этот курс (привлекла невысокая цена и хорошие отзывы), начал проходить, следом появился интерес к Java. По итогу прохождения могу выделить ПЛЮСЫ курса: 1. Теория есть в текстовом и видео формате - кому как больше нравится. 2. Компактный объем. Теория разбита на небольшие разделы, видео длится в среднем 8-12 минут. 3. После теории обязательные тесты и/или задачки на закрепление материала. 4. Минимально требуется изучать дополнительные материалы, обычно теории в 95% случает хватает для решения задач. 5. Оксана (автор курса) оперативно отвечает на все вопросы - почти каждый день за редким исключением. 6. У этого курса есть два продолжения - ООП и Прокачай Java! То есть сразу понятно, что проходить дальше и в какой последовательности. МОМЕНТЫ, на которые я обращал внимание: - Иногда бывало, что в видео есть то, чего нет в текстовой части раздела, или наоборот (обычно это небольшой, но важный нюанс). Поэтому в идеале проверять, что видео совпадает с текстом. Но в целом это не минус, а просто замечание. В видео больше нюансов и проще следить за ходом мысли автора, нежели просто читать сухой текст. - Для совсем новичков в программировании будет сложно, так как автор позиционирует свой курс уже для тех, кто знаком с алгоритмами решения задач и владеет какой-никакой базой (например C/C++). Но если вы знаете, например, основы Python или любого другого языка, то проблем с пониманием у вас не возникнет. Как итог: курсом доволен, буду брать следующий, надеюсь дальше будет только интереснее! КУРС РЕКОМЕНДУЮ ОДНОЗНАЧНО! АВТОРУ СПАСИБО ЗА ПОДДЕРЖКУ И ОТВЕТЫ НА ВСЕ ВОПРОСЫ!

Виталий Виноградов 14 дней назад
👍6
import java.util.*;

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

map.put("A", 1);
map.put("B", 2);
map.put("A", 3);
map.put(null, 4);
map.put(null, 5);

System.out.println(map.get("A"));
System.out.println(map.get(null));
System.out.println(map.size());
}
}
👍3
import java.util.*;

class Key {
String value;

Key(String value) {
this.value = value;
}

@Override
public boolean equals(Object o) {
return true;
}

@Override
public int hashCode() {
return 1;
}
}

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

map.put(new Key("A"), "first");
map.put(new Key("B"), "second");
map.put(new Key("C"), "third");

System.out.println(map.size());
System.out.println(map.get(new Key("Z")));
}
}
2
Что выведет код?
Anonymous Quiz
12%
3 third
52%
1 third
0%
1 first
36%
1 null
import java.util.*;

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

map.put(null, 1);
map.put(null, 2);

map.put("A", null);
map.put("A", 3);

map.put("B", null);

System.out.println(map.get(null));
System.out.println(map.get("A"));
System.out.println(map.get("B"));
}
}
👍3
👍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