Как бы я разделил маленький черный текст на Arraylists в Java? - PullRequest
0 голосов
/ 01 октября 2019

Мне нужно разобрать файл .txt в java и разбить его на Arraylists на основе столбцов. Как бы я на самом деле пошел для получения данных в списки?

. TXT-файл выглядит примерно так

1 A 9 Z
2 B 8 X
1 B 9 X
2 A 9 Z

И я хочу создать 4 списка массивов, которые будут выглядеть так:

Array List 1: < 1, 2, 1, 2>
Array List 2: < A, B, B, A>
Array List 3: < 9, 8, 9, 9>
Array List 4: < Z, X, X, Z>

Это то, что я уже пробовал:

BufferedReader FSMreader = new BufferedReader(new FileReader(args[0]));      
        List<FSMline> line = new ArrayList<>(); 
        List<String> currentState = new ArrayList<>();
        List<String> inputChoice = new ArrayList<>(); 
        List<String> outputFunction = new ArrayList<>();
        List<String> nextState = new ArrayList<>();

Затем я попытался разделить запятую:

 while ((lines = rd.readLine()) != null) {
            line.add(new FSMline(lines.split(",")));

, но это не очень хорошо, и яне знаю, куда идти отсюда или нужно ли использовать цикл for или while

Я просто очень застрял: /

1 Ответ

1 голос
/ 01 октября 2019

Вы должны сначала попытаться заполнить массив строк, а затем транспонировать, чтобы получить его в форме для столбцов. Я бы сделал что-то вроде этого:

BufferedReader r = new BufferedReader(/* other stuff here*/);

ArrayList<String[]> rows = new ArrayList<>();
String line;
while((line = r.readLine()) != null)
    rows.add(line.split(" "));

ArrayList<String> currentState = new ArrayList<>();
ArrayList<String> inputChoice = new ArrayList<>();
ArrayList<String> outputFunction = new ArrayList<>();
ArrayList<String> nextState = new ArrayList<>();

for(int i = 0; i < rows.size(); i++){
    currentState.add(rows.get(i)[0]);
    inputChoise.add(rows.get(i)[1]);
    outputFunction.add(rows.get(i)[2]);
    nextState.add(rows.get(i)[3]);
}

Конечно, эти шаги можно комбинировать, но я просто пытаюсь показать вам, как это работает

...