Выше над комментариями происходят какие-то неизведанные для меня вещи. Код с приложу.
Смысл в том, что я поочерёдно сравниваю длину всех элементов массива строк, и если эта длина элемента > 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(",");
}
}