Конвертировать строки в разные массивы в Java - PullRequest
1 голос
/ 07 декабря 2011

У меня есть файл .txt со строками (в моей ситуации 2). Мне нужно прочитать строки и преобразовать каждый в другой массив. Пример:
1 строка - A, B, C
2 строки - D, E, F, G и т. Д.

и преобразовать это в:
[A, B, C]
[D, E, F, G]

Я делаю это с помощью String.split (",")

ArrayList<String> al_1 = new ArrayList<String>();
ArrayList<String> al_2 = new ArrayList<String>();
while(true){
    String[] line = rbuff.readLine().split(",");
    for(String i : line){
        al_1.add(i);
    }
    if(line == null) break;
}

Какой лучший способ заполнить второе? Thx.

Ответы [ 4 ]

3 голосов
/ 07 декабря 2011

Может быть, вы должны использовать

ArrayList<ArrayList<String>> al = new ArrayList<ArrayList<String>>();

вместо

ArrayList<String> al_1 = new ArrayList<String>();
ArrayList<String> al_2 = new ArrayList<String>();

и заполнить этот список с помощью al.add ()

1 голос
/ 07 декабря 2011

ИМО проще вести список списков.

List<List<String>> lineLists = new ArrayList<List<String>>();

while (true) {
    List<String> lineList = new ArrayList<String>();
    String[] line = rbuff.readLine().split(",");
    for (String i : line) {
        lineList.add(i);
    }
    lineLists.add(lineList);
    if (line == null) break;
}

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

0 голосов
/ 07 декабря 2011

Ну, это почти то, что я бы сделал, но с упоминанием, что если вам не нужны ваши строки внутри объектов ArrayList, вы можете использовать массив Strings (String []).Вот пример:

private static String s1 = "A,B,C",s2="D,E,F";
    private static List<String> lines = new ArrayList<String>(){{add(s1);add(s2);}};

    public static void main(String[] args) throws Throwable {
        Map<Integer,String[]> linesToArraysMap = new HashMap<Integer,String[]>();
        for(int i=1;i<=lines.size();i++) {
            linesToArraysMap.put(i, lines.get(i-1).split(","));
            //if you want to get them as ArrayLists you can do:
            //List<String> lineList = Arrays.asList(lines.get(i-1).split(","));
        }
        for(String[] stringArr:linesToArraysMap.values()) {
            System.out.println(Arrays.toString(stringArr));
        }
    }
0 голосов
/ 07 декабря 2011

Это решение позволит вам добавить новый ArrayList в myArrayList для каждой строки, которую вы читаете из вашего файла:

            List<List<String>> myArrayList = new ArrayList<List<String>>();
            List<String> myStrings;
            while (true) {
                myStrings = new ArrayList<String>();
                String[] line = rbuff.readLine().split(",");
                for (String i : line) {
                    myStrings.add(i);
                }
                myArrayList.add(myStrings);
                if (line == null)
                    break;
            }

У вас будет список с одним списком внутри для каждой строки вашего текстового файла.

MyArrayList
|
|_____List('A', 'B', 'C')
|
|_____List('D', 'E', 'F', 'G')
|
|_____(...)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...