Предполагая, что список списков - лучший способ представить ваши данные:
private ArrayList<ArrayList<T>> data = (put your data here);
ArrayList<ArrayList<String>> temp = new ArrayList<ArrayList<String>>();
for (ArrayList<String> l : data) {
temp.add(Collections.unmodifiableList(l));
}
return Collections.unmodifiableList(temp);
Время выполнения O (n) для массива размера n по m
Список списков - хороший способ выполнить специальный сбор данных для нерегулярно заполненных матриц, но если вы на самом деле имеете дело с обычными двумерными массивами фиксированного размера, имеет смысл создать объект-оболочку вокруг подложки String[][]
и переместите свою бизнес-логику, которая создает эти данные и манипулирует ими, в этот объект.Это включает в себя возвращение только для чтения представления вашей матрицы, и если у вас есть функция, которая ожидает только для чтения List<List<String>>
, вы можете вернуть объект представления, реализующий этот интерфейс, из резервных массивов.