Эффективный элемент Java # ( Я не помню ): Знать и использовать библиотеки.
Вы можете использовать List
и использовать метод toArray
:
List<String[]> twoDimension = new ArrayList<String[]>();
Чтобы преобразовать его в массив, вы должны использовать:
String [][] theArray = twoDimension.toArray( new String[twoDimension.size()][] );
Хитрость заключается в том, что внешний массив объявлен для хранения String[]
(строковые массивы), которые, в свою очередь, могут динамическисоздан с помощью другого List<String>
или, если вы анализируете строки с помощью метода String.split
.
Демонстрация
Сосредоточив внимание на динамическом создании массива, а не на разборе, вот пример того, как он работает в сочетании с String.split
// and array which contains N elements of M size
String input = "[[1],[2,3],[4,5,6,7],[8,9,10,11,12,13]]";
// Declare your dynamic array
List<String[]> multiDimArray = new ArrayList<String[]>();
// split where ],[ is found, just ignore the leading [[ and the trailing ]]
String [] parts = input.replaceAll("\\[\\[|\\]\\]","")
.split("\\],\\[");
// now split by comma and add it to the list
for( String s : parts ){
multiDimArray.add( s.split(",") ) ;
}
String [][] result = multiDimArray.toArray( new String[multiDimArray.size()][]);
Там.Теперь ваш result
- это двумерный динамически создаваемый массив, содержащий: [[1], [2, 3], [4, 5, 6, 7], [8, 9, 10, 11, 12, 13]]
, как и ожидалось.
Вот демоверсия полного запуска , которая также добавляет регулярное выражение в микс, чтобы устранить пробелы.
Я позволю вам разобраться с другими сценариями.