JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Разве плохо сортирует?
Oleh
27 уровень
  • 19.01.2019
  • 671просмотров
  • 6комментариев

Разве плохо сортирует?

Вопрос по задаче Сортировка байт
Java Core,  8 уровень,  3 лекция
Обсуждается


Ввести с консоли имя файла.
Считать все байты из файла.
Не учитывая повторений - отсортировать их по байт-коду в возрастающем порядке.
Вывести на экран.
Закрыть поток ввода-вывода.

Пример байт входного файла:
44 83 44

Пример вывода:
44 83

Требования:
  • Программа должна считывать имя файла с консоли.
  • Для чтения из файла используй поток FileInputStream.
  • В консоль через пробел должны выводиться все уникальные байты из файла в порядке возрастания.
  • Данные в консоль должны выводится в одну строку.
  • Поток чтения из файла должен быть закрыт.
....
package com.javarush.task.task18.task1805; import java.io.*; import java.util.*; /* Сортировка байт */ public class Solution { public static void main(String[] args) throws Exception { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String s = reader.readLine(); ArrayList<Integer> list = new ArrayList<>(); FileInputStream file = new FileInputStream(s); while(file.available()>0){ int z = file.read(); list.add(z); } file.close(); Collections.sort(list); HashMap<Integer,Integer> map = new HashMap<>(); for(int i=0;i<list.size();i++){ map.put(i,list.get(i)); } ArrayList<Integer> list2 = new ArrayList<>(); for(HashMap.Entry<Integer,Integer> map2: map.entrySet()){ int value = map2.getValue(); list2.add(value); } Collections.sort(list2); for(int i=0;i<list2.size();i++){ System.out.print(list.get(i)+" "); } } }
0
Комментарии (6)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Константин БалинTeam Lead в РОСАТОМ
8 апреля 2019, 09:01
Как один из вариантов использовать Set После этого из set стримомо преобрабозвать в List и отсортировать.
0
Радик
Уровень 35
19 января 2019, 20:15
Если лист отсортирован, то зачем его перегонять через мапу в лист2, какой смысл? Повторения не удалены. Согласен с Сергеем, TreeMap автоматом сортирует, а чтобы без дублей - можно при добавлении замутить маленькую проверку по ключу (это байт).
0
Сергеев Виктор
Уровень 40
Master
19 января 2019, 13:58
да плохо, дубликаты не удаляете
0
Oleh
Уровень 27
19 января 2019, 14:02
Переделал запись в мап по Ключу, дубликатов не должно быть, но пробелема осталась
0
Sergey Moroz
Уровень 26
Expert
19 января 2019, 15:16
Это какой-то перегонный куб получился: List -> Map -> List. Плюс куча сортировок и циклов... Почитай за TreeSet и задача решится в два цикла (1. чтение байт; 2. вывод сета) без принудительной сортировки и перегонки данных туда-сюда.
0
Roman
Уровень 32
13 февраля 2020, 12:45
Еще проще можно решить через 1 массив на 256 элементов. Первый проход - чтение файла и подсчет байт, второй - проход по массиву от начала к концу и вывод всех индексов, под которыми не 0 (a[i] != 0)
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush