Учитель zapp

Нити и байты

  • 10
  • Недоступна
Читайте с консоли имена файлов, пока не будет введено слово "exit". Передайте имя файла в нить ReadThread. Нить ReadThread должна найти байт, который встречается в файле максимальное число раз, и добавить его в словарь resultMap, где параметр String - это имя файла, параметр Integer - это искомый ба
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (196)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Деня22 уровень, Москва
4 сентября, 18:03
почему вали не принимает start() в конструкторе ?
Александр19 уровень
29 августа, 04:59
Три попытки из-за RUN вместо START. Задача интересная)
Павел Минеев31 уровень, Челябинск
28 августа, 03:17
Задача простая, но интересная. Главное - просто следовать внимательно прочитанным требованиям задачи. Немного сомневался по поводу того, что может быть несколько байт с максимальным числом вхождений, но вспомнив что результат хранится в Map-е, понял что сомнения эти напрасны. И судя по тому, что искал я максимальное число повторений прямо в процессе побайтового считывания, выходит что подойдёт любой самый часто встречающийся байт в случае, если таковых несколько. С какой-то практической стороны такой подход сомнительный, но в контексте учебной задачи допустимый. P.S. Ну и конечно любимая моя фишка про массив int[256] здесь прекрасно отрабатывает.
Александр Малых20 уровень, Коряжма
26 августа, 13:32
очень простая задача, если решены предыдущие :)
Vitaliy22 уровень, Санкт-Петербург
11 августа, 12:44
Ачешуительная задача! ^_^
Руслан22 уровень, Усть-Орда
4 августа, 19:29
я не понял, а если несколько байт повторяются макс количество раз, нужно записать последний? т.к. в мапе все равно перезапишется по ключу имя файла.
Morgan23 уровень, Львов
30 июля, 13:29
Занес в мапу количество упоминаний байта, а не сам байт. В-внимательность. А так задачка интересная.
Ivan Tyulpin23 уровень, Москва
28 июля, 23:21
Крутая задачка, дала возможность еще раз попрактиковаться в таких темах как - Comparator (так как отсортировать TreeMap по значениям - это тупая затея, а вот вывести множество пар ключ-значение из карты в новую коллекцию и отсортировать с помощью Компаратора - самое то!), лямда (повышает читаемость кода и снижает его объемы), и изучил новую фишку Компаратора - метод comparing (раз в 10 сокращает объем кода + в столько же повышает читабельность) Советую почитать про Comparator и Comparable интерфейсы, а также про Лямбду: Lambda - Javarush Comparator и Comparable интерфейсы - Javarush Comparator и Comparable интерфейсы - Vertex
Oleg20 уровень, Киев
25 августа, 12:23
еще проще,в новую мапу вносим наше значение и количество повторений. map.put(b1, map.merge(b1, 1, Integer::sum)); дает сразу ключ по максимальному значению) stream().max(Map.Entry.comparingByValue()).get().getKey(); 2 строки решают задачу и не нужна сортировка даже)
Ivan Tyulpin23 уровень, Москва
25 августа, 17:04
Понял только в общем плане, можно в студию более расширенную версию с комментариями - для общего развития) Так как я еще не работал с Map.merge(), interface BiFunction и конструкцией Integer :: sum.
Oleg20 уровень, Киев
26 августа, 20:55
map.merge(b1,1,Integer::sum)-возвращает число это появилось в джава 8,там же и стрими ,лямбда и тд.классная штука,не все еще понял и сам) merge в даном случаи ищет повторение b1. 1-1 повторение,если еще будут повторения,то Integer::sum плюсует +1. а со стримом,ещем максимум по значению ,потом это значение берем,и по нему выводим ключ
Павел Минеев31 уровень, Челябинск
28 августа, 03:22
Лямбды повышают читаемость? Как по-мне так наоборот, поэтому лямбды особо и не распространены.
Nikita Kuznetsov27 уровень, Москва
14 июля, 20:51
Уважаемые авторы чем дальше, тем сложнее угадывать детали, которые вы не дописали в условии. В этой задаче оказывается нельзя в конструкторе класса ReadThread вызывать start(). Обязательно надо у объекта вызывать start() в методе main(). Можно, пожалуйста, такие вещи четко прописывать? Извините из этого пункта "Для каждого файла создай нить ReadThread и запусти ее" не очевидно, что запускать нить из конструктора нельзя.
Georgiy41 уровень, Москва
25 августа, 16:42
Тоже долго думал в чем проблема, оказалось нельзя в конструкторе this.start() делать ...
Павел24 уровень, Санкт-Петербург
22 июня, 21:12
код : http://prntscr.com/o5dt7c я почему то создаю только две нити + джоин а добавляется стабильно 3( http://prntscr.com/o5dtp8 ), не подскажите почему так??