TGViewer
Channel Public Channel
Java Geek

Java Geek

@java_geek

Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах.

По всем вопросам @evgenycarter
Subscribers
2.36K
Photos
292
Videos
0
Links
55

Showing posts older than #45 · Back to latest

Older Posts 20 shown
Post #44 475
Работа с ошибками

Отлов багов – это, возможно, самая трудоемкая составляющая процесса разработки на Java. Трассировка стека позволяет отследить, в каком именно месте проекта было выброшено исключение.

@java_geek
  • 👍 5
Post #43 488
Эффективный трюк, чтобы узнать, является ли число степенью двойки

Обычный метод деления имеет сложность O(logN), но эту задачу можно решить со сложностью O(v), где v — количество цифр числа в двоичной форме.

@java_geek
  • 👍 2
Post #42 489
Резервирование памяти

Некоторые Java-приложения очень требовательны к ресурсам и могут работать медленно. Для повышения производительности можно выделять Java-машине больше оперативной памяти.

• Xms – минимальный пул выделения памяти;
• Xmx – максимальный пул выделения памяти;
• XX:PermSize – начальный размер, который будет выделен при запуске JVM;
• XX:MaxPermSize – максимальный размер, который может быть выделен при запуске JVM.

@java_geek
  • 👍 1
Post #41 486
Бинарный поиск в массивах

Допустим, мы хотим вставить новый элемент в отсортированную таблицу. Arrays.binarySearch() возвращает индекс ключа поиска, если он содержится в таблице. В противном случае она возвращает точку вставки, которую мы можем использовать для подсчета индекса для нового ключа: -(insertion point)-1. Более того, метод binarySearch является самым простым и эффективным методом поиска элемента в отсортированном массиве в Java.

Рассмотрим следующий пример. У нас есть таблица ввода с четырьмя элементами, упорядоченными по возрастанию. Мы хотели бы вставить номер 3 в эту таблицу. Вот как мы можем подсчитать индекс точки вставки.

@java_geek
  • 👍 1
Post #40 461
Пустая коллекция вместо Null

Если ваша программа может возвращать коллекцию, которая не содержит ни одного значения, убедитесь, что возвращена именно пустая коллекция, а не Null. Это сэкономит вам время на различные проверки.

@java_geek
  • 👍 2
Post #39 474
Перегрузка в Java

Перегрузка позволяет различным методам иметь одно и то же имя, но разные сигнатуры, где сигнатура может отличаться по количеству входных параметров или по типу входных параметров, либо по обоим этим признакам.

@java_geek
  • 👍 2
Post #38 460
Проверка четности или нечетности числа без использования оператора %

Хотя этот трюк не намного лучше, чем использование оператора %, но иногда он все-таки более эффективен (с большими числами).

@java_geek
  • 👍 5
Post #37 476
Подчеркивание в числовых литералах

В Java SE 7 и более поздних версиях символы подчеркивания могут использоваться в числовых литералах без появления каких-либо предупреждений или ошибок в выводе.

@java_geek
  • 👍 5
  • 🔥 1
Post #36 2.81K
Объединение хеш-таблиц

Объединять два хеша, итерируя их значения вручную, весьма неэффективно. Вот альтернативное решение этой задачи, которое точно вам понравится.

@java_geek
  • 👍 4
  • 🔥 1
Post #35 506
Цикл foreach

JDK 1.5 представила новый цикл for, известный как цикл foreach или расширенный цикл for, который позволяет последовательно пройти весь массив без использования индекса переменной.

Следующий код отображает все элементы в массиве myList.

@java_geek
  • 👍 3
Post #34 2.82K
Захват координат курсора

Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.

@java_geek
  • 👍 2
Post #33 482
Методы start и end

Выше представлен пример, в котором производится подсчет количества раз, когда в строке ввода встречается слово "кот".

Как видим, в данном примере используются границы слов с целью удостоверения в том, что буквы "c" "a" "t" не являются частью другого слова. Также отображаются определенные полезные сведения касательно нахождения совпадения в вводимой строке.

Метод start производит возврат начального индекса в последовательности, захваченной в данной группе в ходе предыдущей операции поиска совпадений, а end производит возврат индекса к последнему совпавшему символу, плюс один.

@java_geek
  • 👍 2
Post #32 453
Поиск позиции для вставки числового элемента в массив

Есть небольшой интересный прием, позволяющий найти позицию, в которую запрошенный элемент может быть вставлен в отсортированный массив.

@java_geek
  • 👍 4
Post #31 3.36K
Выполнение консольных команд

Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.

Например, давайте попробуем открыть файл PDF через терминал Java (на Linux’e).

@java_geek
  • 👍 6
Post #30 2.8K
Меняем местами две переменные в одной строке

Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a

Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.

@java_geek
  • 👍 4
Post #29 503
Отправка email

Отправить электронную почту на Java очень просто. Вам просто нужно установить Java Mail и указать путь к нему в пути к классам проекта.

@java_geek
  • 👍 1
Post #28 2.64K
Создание объектов только при необходимости

Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.

@java_geek
  • 👍 3
Post #27 460
Оптимизация строк

При конкатенации строк на Java с помощью оператора +, например, в цикле for, каждый раз создается новый объект String, что приводит к потере памяти и увеличению времени работы программы.

Также следует избегать создания Java строки с помощью конструктора класса.

@java_geek
  • 👍 5
Post #26 8.47K
Метод replace()

Заменяет символами подстроки данной строки буфера (StringBuffer) заданные символы в строке. Другими словами метод позволяет в Java заменить символы в строке между указанными начальным и конечным индексами.

Параметры:
start — начальный индекс, включительно;
end — конечный индекс, не включая;
str — строка, которая заменит предыдущее содержимое.

@java_geek
  • 👍 6
Post #25 433
Содержимое директории

Java позволяет получить имена всех подкаталогов и файлов в папке в виде массива, который затем можно последовательно просмотреть.

@java_geek
  • 👍 5
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →