Предположим, если у меня есть матрица 4x4 массив какКак получить часть массива 2d?
aaaa
abba
abba
aaaa
Могу ли я получить матрицу 3х3 из приведенной выше матрицы и хранить его в другом 2d массива. Матрица 3х3 должна содержать элементы
aaa
abb
abb
аналогично
aaa
bba
bba
и больше двух матриц.
Это можно сделать с помощью массивов Array.copyOfRange?
EDIT: Мне также нужны другие 2 3x3 матрицы, т.е.
abb
abb
aaa
и
bba
bba
aaa
Как, если я перехожу элементы в матрице 2х2, которая в 4x4, т.е.. b, он должен дать мне матрицу 3x3, окружающую элемент.
Я могу это сделать, используя цикл for, который принимает значения i и j из вычитания 1 из индекса элемента (здесь 'b'), который я передаю, что приводит к матрице 3x3, значение b (см. выше). Но просто хочу знать, есть ли более простой способ.
Возможно, вы могли бы сначала (а) прочитать документацию: https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#copyOfRange(byte[],%20int,% 20int), (б) Попробуйте. Если это не сработает для вас, отправьте код, который вы пробовали, с вашей конкретной проблемой. – EJK
Да, я видел документацию. Но я мог бы найти, что copyofrange может получать данные из одномерного массива. Я хочу знать, как это можно сделать для 2d-массива. Я могу использовать центр 2x2 в матрице 4x4 и получить элементы, окружающие каждый элемент 2x2, чтобы получить требуемый массив 3x3, использующий для циклов. Просто хотел знать, есть ли простой способ. – v1shnu
Если вы добавили дополнительную информацию о том, что вы собираетесь делать с этими суб-массивами, можно дать дополнительные подсказки. Например, вы можете рассмотреть 'интерфейс Array2D {...}', который имеет метод 'Array2D getSubArray (...)', который возвращает только * вид * в подматрица. Здесь возможно множество решений, и некоторые из них могут быть более элегантными, чем копирование, в зависимости от случая приложения. – Marco13