Пирамидальная сортировка
Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево.
Она берет элементы массива и вставляет их в пирамиду.
После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде.
Общее время сортировки расчитывается по O(N logN) для N элементов.
Пирамидальная сортировка является методом сортировки, который интерпретирует элементы в массиве, как почти полное бинарное дерево.
Она берет элементы массива и вставляет их в пирамиду.
После построения пирамиды, из нее по очереди удаляются наибольшие элементы и вставляются в конец массива, где и находятся в отсортированном виде.
Общее время сортировки расчитывается по O(N logN) для N элементов.
🔥12👍1
Что выведет код сверху?
Anonymous Quiz
7%
Overloaded main method
38%
main method
17%
main method Overloaded main method
38%
Error
🎉6👍3
Google-json (GSON)
Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Примерно вот так выглядит сериализация и десериализация с помощью GSON(см картинку).
Как видно, перевод объекта проходит с помощью минимального количества легкочитаемого и понимаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
Google-json, как понятно из названия, ещё одна разработка прямиком из Google. Библиотека реализует механизмы работы с форматом JSON, а именно приведение Java-объектов в этот формат и обратно.
Примерно вот так выглядит сериализация и десериализация с помощью GSON(см картинку).
Как видно, перевод объекта проходит с помощью минимального количества легкочитаемого и понимаемого кода. Особенно эта библиотека пригодится при работе с RESTful приложениями, которые общаются преимущественно с помощью json.
❤11👍3
👍8
iluwatar/java-design-patterns
Самый популярный Java-репозиторий на GitHub – коллекция паттернов проектирования всех видов и мастей.
Паттерны – это лучшие практики организации проектов, которые упрощают и ускоряют процесс разработки. Они представляют собой хорошо продуманные и протестированные решения самых распространенных задач программирования. Паттерны учитывают много мелочей, о которых вы легко можете забыть, и спасают от распространенных и глупых ошибок.
Каждый паттерн в репозитории, будь он моно или нет, содержит подробное описание и примеры реализации на Java.
Самый популярный Java-репозиторий на GitHub – коллекция паттернов проектирования всех видов и мастей.
Паттерны – это лучшие практики организации проектов, которые упрощают и ускоряют процесс разработки. Они представляют собой хорошо продуманные и протестированные решения самых распространенных задач программирования. Паттерны учитывают много мелочей, о которых вы легко можете забыть, и спасают от распространенных и глупых ошибок.
Каждый паттерн в репозитории, будь он моно или нет, содержит подробное описание и примеры реализации на Java.
🔥14
👍33👎1
winterbe/java8-tutorial
Подробное руководство по Java 8, шаг за шагом описывающее все возможности и особенности языка. Короткие демонстрационные примеры отлично показывают основные концепции. Минимум текста, максимум наглядности. Репозиторий может служить и учебником, и справочником.
Подробное руководство по Java 8, шаг за шагом описывающее все возможности и особенности языка. Короткие демонстрационные примеры отлично показывают основные концепции. Минимум текста, максимум наглядности. Репозиторий может служить и учебником, и справочником.
😱6🔥2
Что произойдет после вызова метода test()?
Anonymous Quiz
32%
Не скомпилируется
33%
В консоль выведется «Hello!»
24%
Ничего не будет напечатано
10%
Исключение в рантайме
#Вопросы_с_собеседования
Какой результат выведет вызов метода foo()?
Ответ:
Разберем решение детально: С первым выводом
Какой результат выведет вызов метода foo()?
Ответ:
“HelloHello”
Разберем решение детально: С первым выводом
Hello
вопросов быть не должно, далее в метод bar
передаем копию ссылки на строку, теперь на данную строку ссылаются две переменные: m
из метода foo
и m
из метода bar
. Так как строки в Java являются immutable, при попытке присоединить к уже существующей строке дополнительное значение World!
, в методе bar
произойдет создание новой строки и локальная переменная m
этого метода будет ссылаться на новую строку со значением Hello World!
, при этом в методе foo
в результат будет выведено значение переменной m
которая по прежнему ссылается на строку Hello
.👍34
#Вопросы_с_собеседования
Каким будет результат сравнения в следующем коде?
Ответ:
s1 == s2 ? true
s1 == s3 ? false
s1 equals s3 ? true
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.
Каким будет результат сравнения в следующем коде?
Ответ:
s1 == s2 ? true
s1 == s3 ? false
s1 equals s3 ? true
Вопрос на понимание работы пула строк в Java и на понимание сравнения строк. Разберем детально: Переменная s1 ссылается на строку в пуле уникальных строк в памяти, переменная s2 ссылается на ту же саму строку в пуле уникальных строк, что и переменная s1, первое сравнение будет true, так как s1 и s2 ссылаются на один и тот же объект. Переменная s3 ссылается на новый объект, который не находится в пуле уникальных строк, так как он создан через new, следовательно второе сравнение будет false, так как сравниваем переменные которые ссылаются на на два разных объекта. Третье сравнение будет true, так как мы сравниваем строки посимвольно на эквивалентность через equals, а содержимое данных строк одинаково.
👍18
TheAlgorithms/Java
Коллекция популярных и не очень алгоритмов, реализованных на Java. Тут можно найти решение для любой задачи программирования: сортировки, поиска, сжатия, конвертации и т. д.
Не все из этих алгоритмов удобны и оптимальны, иногда можно найти в стандартной библиотеке Java примеры получше. Однако для демонстрационных и образовательных целей этот репозиторий подходит замечательно.
Коллекция популярных и не очень алгоритмов, реализованных на Java. Тут можно найти решение для любой задачи программирования: сортировки, поиска, сжатия, конвертации и т. д.
Не все из этих алгоритмов удобны и оптимальны, иногда можно найти в стандартной библиотеке Java примеры получше. Однако для демонстрационных и образовательных целей этот репозиторий подходит замечательно.
👍11❤1
ReactiveX/RxJava
Второй по звездности на GitHub Java-репозиторий – библиотека RxJava, основанная на API ReactiveX. Она позволяет писать асинхронные событийно-управляемые программы для виртуальной Java машины, поддерживает последовательности событий и их комбинации. В основе работы лежит классический паттерн Наблюдатель, только вместо одного объекта используется целый поток данных.
C RxJava можно больше не беспокоиться о низкоуровневом распараллеливании, синхронизации, потокобезопасности и обработке ошибок.
Второй по звездности на GitHub Java-репозиторий – библиотека RxJava, основанная на API ReactiveX. Она позволяет писать асинхронные событийно-управляемые программы для виртуальной Java машины, поддерживает последовательности событий и их комбинации. В основе работы лежит классический паттерн Наблюдатель, только вместо одного объекта используется целый поток данных.
C RxJava можно больше не беспокоиться о низкоуровневом распараллеливании, синхронизации, потокобезопасности и обработке ошибок.
👍4
#Вопросы_с_собеседования
Каким будет результат выполнения данного кода?
Ответ:
Before [one, one and a half, two, two and a half, three and a half]
Exception in thread "main" java.util.ConcurrentModificationException
При попытке добавить элемент в список возникнет исключение связанное с попыткой изменить список , по которому итерируемся, так как итератор для ArrayList изначально это fail-fast итератор. В таком случае необходимо использовать fail-safe итераторы, они работают с клоном коллекции которую потребовалось изменить. В данном случае можно использовать CopyOnWriteArrayList.
Каким будет результат выполнения данного кода?
Ответ:
Before [one, one and a half, two, two and a half, three and a half]
Exception in thread "main" java.util.ConcurrentModificationException
При попытке добавить элемент в список возникнет исключение связанное с попыткой изменить список , по которому итерируемся, так как итератор для ArrayList изначально это fail-fast итератор. В таком случае необходимо использовать fail-safe итераторы, они работают с клоном коллекции которую потребовалось изменить. В данном случае можно использовать CopyOnWriteArrayList.
👍16
google/guava
Проверенная временем библиотека ядра от Google, включающая в себя массу полезных инструментов и утилит для всех задач программирования. Особенно хороша Guava в работе с упорядоченными коллекциями. Функции сравнения и сортировки в библиотеке проработаны замечательно.
Проверенная временем библиотека ядра от Google, включающая в себя массу полезных инструментов и утилит для всех задач программирования. Особенно хороша Guava в работе с упорядоченными коллекциями. Функции сравнения и сортировки в библиотеке проработаны замечательно.
👍6