Выше над комментариями происходят какие-то неизведанные для меня вещи. Код с приложу. Смысл в том, что я поочерёдно сравниваю длину всех элементов массива строк, и если эта длина элемента > 7, тогда я затираю этот элемент (присваиваю null), потом же я в другом цикле добавляю поочерёдно элементы этого же массива строк в лист строк, при условии, что элемент массива != null -- в данном случае всё работает нормально, но давайте вернёмся немножко назад, а именно к моменту, когда я поочерёдно сравниваю длину всех элементов массива строк, и если эта длина элемента > 7, то я не могу этот элемент сразу ("на горячую") добавить в мой лист, потому что если я так делаю, то получаю неожиданные элементы в листе, которые и больше, и меньше 7, чего не может быть по условию. Кто шарит, почему так может быть? Прилагаю код:
private void readSortWrite(BufferedReader reader, BufferedWriter writer) throws IOException {
        ArrayList<String> readyFormat = new ArrayList<>();
        String string;
        while ((string = reader.readLine()) != null) {
            String[] splittedStringArray = string.split("\\s");
            for (int i = 0; i < splittedStringArray.length; i++) {
                if (splittedStringArray[i].length() < 7) {
                    splittedStringArray[i] = null;
                    //  вместо splittedStringArray[i] = null; могло бы быть readyFormat.add(splittedStringArray[i]);
                    // если добавлять здесь элемент массива в лист сразу, то происходят какие-то баги, результат очень странный
                }
            }
            for (int i = 0; i < splittedStringArray.length; i++) {
                if (splittedStringArray[i] != null) readyFormat.add(splittedStringArray[i]);
            } // если использовать эту костылину, то всё работает, хотя можно было добавлять в цикле выше

        }
        for (int i = 0; i < readyFormat.size(); i++) {
            writer.write(readyFormat.get(i));
            if (i != readyFormat.size() - 1)
                writer.write(",");
        }
    }