Добавить массив String [] в другой массив String [] - PullRequest
0 голосов
/ 14 декабря 2011

Один из моих методов возвращает массив String [] в цикле. Пока цикл продолжается, я хочу добавить эти массивы String [] в другой массив String []. Я хочу что-то подобное, приведенное ниже. Это дает несоответствие ype: невозможно преобразовать из String [] в String error.

String[] searchResultList = new String[25];
int count = 0;
for (...) {
          String[] resultList = getArray(parameter);
          searchResultList[count] = resultList;
          count++;
        }

Ответы [ 7 ]

6 голосов
/ 14 декабря 2011

Итак, вы попытались установить элемент массива строк в качестве другого массива строк.Вы не можете этого сделать.

Либо вам нужно создать searchResultList массив строковых массивов (String[][]), либо вам нужно скопировать все строки в resultList в searchResultList.

Какой бы способ вы ни выбрали, вам, вероятно, следует рассмотреть возможность использования List<String> вместо массивов ... таким образом, вам не нужно жестко кодировать произвольный верхний регистрограничение размера массива, так как список может увеличиваться.

0 голосов
/ 27 июня 2016
ArrayList<ArrayList> myDoubleArray = new ArrayList<>();

Это может сработать, я не пробовал, хотя

0 голосов
/ 14 декабря 2011
String[] resultList = getArray(parameter);
searchResultList[count] = resultList;

Здесь, resultList - это массив. Но searchResultList [count] - это String. Таким образом, вы получаете «не удалось преобразовать String [] в String error»лучше вы можете использовать

String[] resultList = getArray(parameter);
searchResultList[count] = resultList[count];

.. используйте это. Теперь вы можете получить с заявлением

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

Вы говорите, что должны использовать String [], а не List. Но ничто не должно мешать вам использовать List внутри вашего метода и возвращать массив, например

    List<String> searchResult = new ArrayList<String>();
    for (?) {
        String[] resultList = getArray(parameter);
        searchResult.addAll(Arrays.asList(resultList));
    }
    return searchResult.toArray(new String[searchResult.size()]);
0 голосов
/ 14 декабря 2011

Ваша проблема в том, что вы пытаетесь сохранить String[] - то есть массив строк, количество строк - в массиве, который хранит String - то есть только отдельные строки. Вы можете положить одну сумку прямо в другую, сначала нужно достать вещи из сумки.

Итак, что вам нужно сделать, это:

  1. Добавьте записи в возвращенном массиве resultList одну за другой в массив searchResultList
  2. И убедитесь, что вы изменили размер массива searchResultList для хранения всех новых значений

Или, гораздо лучшее решение, вы можете просто использовать List, так как они растут автоматически и позволяют добавлять несколько элементов одновременно:

List<String> searchResultList = new ArrayList<String>();
for (...) {
    String[] resultList = getArray(parameter);
    searchResultList.addAll(Arrays.asList(resultList));
}
0 голосов
/ 14 декабря 2011

U должен использовать ArrayUtils.addAll (..) для добавления всех элементов из одного массива в другой.

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

Ваша переменная searchResultList хранит String элементов, но вы пытаетесь добавить к ней String[], так что это нормально.

Почему бы вам не сделать searchResultList ArrayList<String>,а также getArray() вернуть такой ArrayList?Таким образом, все, что вам нужно сделать, это searchResultList.add(getArray(parameter));

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...