Хорошо, позвольте мне разбить его на вас.
public ArrayList<ArrayList<String>> readFormat(ArrayList<String> inputDataList)
Этот метод принимает ArrayList в качестве аргумента, ArrayList имел обыкновение хранить строку файла для каждого индекса.
например, 1-я строка файла = arrayList (1-й индекс) 2-я строка файла = arrayList (2-й индекс)
Итак,
for (String string : data) {
ArrayList<String> inner = new ArrayList<String>(Arrays.asList(string.split(" ")));
storeDataList.add(inner);
}
Этот цикл foreach повторяет каждый индекс и затем разделяет каждое слово пробелом и создает новый список для хранения этих разделенных слов.
Результатом является массив arrayList, имеющий отдельный ArrayList для каждого индекса, в котором отдельные слова содержатся в каждом индексе.
Для альтернативного - аккуратного решения
Если это слишком сложно для вас, посмотрите на это решение
https://www.javacodex.com/Files/Read-File-Word-By-Word