Как разбить входной файл на слова в Java? - PullRequest
0 голосов
/ 22 января 2020

Мне нужно прочитать текст из входного файла в Java и сначала разбить его на строки, а затем слова. Этот метод, используемый здесь, насколько я понимаю, заключается в хранении слов в списке. Можете ли вы объяснить мне немного больше, как работает этот метод или как я могу сделать это по-другому? Спасибо!

import java.util.Arrays;

public class StoreLinesFormat {
    private ArrayList<ArrayList<String>> storeDataList;

    public StoreLinesFormat() {

    }

    public ArrayList<ArrayList<String>> readFormat(ArrayList<String> inputDataList) {
        ArrayList<String> data = inputDataList;
        if (data != null) {
            storeDataList = new ArrayList<ArrayList<String>>();

            for (String string : data) {
                ArrayList<String> inner = new ArrayList<String>(Arrays.asList(string.split(" ")));
                storeDataList.add(inner);
            }

            return storeDataList;

        } else {
            System.out.println("Array error detected. NULL array value.");
            return null;
        } 
    }

}

Ответы [ 2 ]

0 голосов
/ 22 января 2020

inputDataList представляется ArrayList, содержащим файл строка за строкой.

Тогда inner получает для каждого цикла этого for l oop каждое слово (где " слово "означает строку, разделенную символом пробела, в данном случае), потому что split был вызван в единственной строке, которую вы анализируете внутри этой l oop.

В этот момент разделенные слова массово добавляются к storeDataList, и цикл повторяется для каждого элемента массива (то есть для каждой строки файла).

0 голосов
/ 22 января 2020

Хорошо, позвольте мне разбить его на вас.

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

...