Задание #2 выполнено для Java + более "функциональный" подход для кода Scala