Что является лучшим и оптимальным решением для итерации списка мыслей массива строк и получения его значения? - PullRequest
0 голосов
/ 14 июля 2011

У меня есть список массивов строк, List <String []>, каков наилучший оптимальный подход для получения содержимого этого списка массивов строк?

public List<String []> readFromString (String data){
  StringReader stringReader = new StringReader(data);
  CVSReader reader = new CVSReader(stringReader);
  return reader.readAll()
}

В приведенном выше примере я хочу увидетьфактическое содержание reader.readAll (), какие-либо предложения относительно того, как оптимально получить эту информацию?

Ответы [ 4 ]

1 голос
/ 14 июля 2011

Желая просмотреть содержимое и «получить информацию», если вы имеете в виду, что хотите отправить его в стандартную версию или в свой файл журнала, чтобы увидеть полный дамп данных, вы можете использовать List toString (т.е. System.out.println(reader.readAll());).Он печатает все значения.Следующий модульный тест подтверждает это:

public void testListOfArraysToStringPrintsAllValues(){
        String[] array1 = ["array1.1", "array1.2"];
        String[] array2 = ["array2.1", "array2.2"];

        List<String[]> listOfArrays = new ArrayList<String[]>();
        listOfArrays.add(array1);
        listOfArrays.add(array2);

        assertEquals("[[array1.1, array1.2], [array2.1, array2.2]]", listOfArrays.toString());

}
1 голос
/ 14 июля 2011

Я не думаю, что можно было бы избегать петли по всей структуре. Даже если вы вызовете .toString (), который вполне может дать то, что вы хотите, вы все равно будете нести расходы на цикл по всей структуре данных:

String results = readFromString(data);

StringBuilder output = new StringBuilder();
for(String[] sArray : results) {
    for(String s : sArray) {
        output.append(s);
    }
}

System.out.println(output);

(Примечание: вставляйте символы форматирования по мере необходимости - вы можете поставить запятую после каждой строки и \ n после завершения каждого списка, чтобы сделать вывод более читабельным.)

0 голосов
/ 14 июля 2011

Я могу ошибаться, но мои предположения:

  • Для разделения строк:

String[] lines = data.split("\n");

  • Чтобы получитьjava.util.List

java.util.Arrays.asList(lines)

  • Для разделения каждой строки:

String[] fields = line.split(",");

гдеline будет одним из элементов String[] lines.

0 голосов
/ 14 июля 2011

Вы ищете что-то подобное?

for(String[] sArray : new CVSReader(new StringReader(data)).readAll())
{
    for(String s : sArray)
    {
        System.out.prinntln(s);
    }
    System.out.prinntln("*********");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...