Метод ввода:
Упростите для себя и работайте напрямую с символами, а не с байтами.Например, вы можете использовать FileReader
и, возможно, обернуть его внутри BufferedReader
.По крайней мере, я бы посоветовал взглянуть на InputStreamReader
, так как реализация перехода от байтов к символам уже сделана для вас.Я предпочел бы использовать Scanner
.
. Я бы предпочел вернуть null
или вызвать исключение из вашего readIn()
метода.Исключения не должны использоваться для управления потоком, но здесь вы отправляете вызывающему важное сообщение: предоставленный вами файл недействителен.Это подводит меня к другому вопросу: подумайте, действительно ли вы хотите перехватить все исключения или только некоторые из них.Вам придется обрабатывать все проверенные исключения, но, возможно, вы захотите обрабатывать их по-другому.
Коллекции:
Вы действительно не используете классы коллекций, вы используете массив.Ваша реализация выглядит нормально, но ...
Конечно, есть много способов решения этой проблемы.Ваш метод - сортировка, затем сравнение с последним - в среднем O (nlogn).Это конечно не плохо.Посмотрите, как можно использовать реализацию Map
(например, HashMap
) для хранения необходимых вам данных при обходе только текста в O (n) (HashMap
* get()
и put()
- ипредположительно contains()
- методы O (1)).