Старый 20.01.2008, 00:26   #1   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
Вопрос по синтаксису Java

Можно ли изящно скопировать строку из матрицы a[n][m] в вектор b[m]?

P.S. поэлементное копирование в цикле не предлагать.
  Ответить с цитированием
Старый 20.01.2008, 12:41   #2   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
Спасибо большое. разобрался.
  Ответить с цитированием
Старый 28.01.2008, 23:12   #3   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
Еще вопросик мучает, ради красоты

у меня конструктор одного класса должен сжирать два вектора:

class myclass
{
..

myclass(double[] A, double[] B)
{...}

..
}


Теперь когда я создаю объект:

myclass myobject = new myclass(somearray1, somearray2)

вместо одномерных массивов somearray1 и somearray2, можно ли вбить напрямую нужные строки и столбцы двухмерной матрицы, с понтом они строки и столбцы, используя гибкость синтаксиса, не копируя их сначала в одномерные somearray1 и somearray2.
  Ответить с цитированием
Старый 30.01.2008, 21:01   #4   
Форумец
 
Сообщений: 83
Регистрация: 30.01.2008
Возраст: 39

Svist7 вне форума Не в сети
Создай анонимный класс для массива

myclass(new double[] {1,2,6,8,9},new double[] {1,2,6});
  Ответить с цитированием
Старый 30.01.2008, 22:11   #5   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
Цитата:
Сообщение от kolega
System.arraycopy(matrix[n], 0, vec, 0, vec.length);
сцуко, а как скопировать столбик матрицы?

Цитата:
Сообщение от Svist7
myclass(new double[] {1,2,6,8,9},new double[] {1,2,6});
недошло
  Ответить с цитированием
Старый 30.01.2008, 22:39   #6   
Форумец
 
Сообщений: 83
Регистрация: 30.01.2008
Возраст: 39

Svist7 вне форума Не в сети
Цитата:
Сообщение от skyfish
недошло
Чего не дошло?

Загоняем массивы {1,2,6,8,9} и {1,2,6} соответствено. new double[]{1,2,6,8,9} - это Java имеет возможность создавать объекты безымянных классов.
  Ответить с цитированием
Старый 30.01.2008, 22:42   #7   
Форумец
 
Сообщений: 83
Регистрация: 30.01.2008
Возраст: 39

Svist7 вне форума Не в сети
Цитата:
Сообщение от skyfish
сцуко, а как скопировать столбик матрицы?
Есть подозрение, что никак. Поскольку двумерный массив в JAVA представляется на самом деле как массив одномерных
  Ответить с цитированием
Старый 31.01.2008, 09:22   #8   
Форумец
 
Сообщений: 21
Регистрация: 10.10.2006

dev вне форума Не в сети
Цитата:
Сообщение от skyfish
сцуко, а как скопировать столбик матрицы?
таки перебором, если им то:
Цитата:
int[][] a = {{1,2,3}, {4, 5, 6}};
MyClass mc = new MyClass(a[0], new Object() {
private int[] vec;
public int[] getCol(int[][] arr, int colInd) {
vec = new int[arr.length];
for (int i = 0; i < arr.length; i++) {
vec[i] = arr[i][colInd];
}
return vec;
}
}.getCol(a, 1));
набирал сразу здесь, так что могут быть ошибки
  Ответить с цитированием
Старый 31.01.2008, 09:48   #9   
ЯФ
 
Аватар для skyfish
 
Сообщений: 351
Регистрация: 27.01.2007
Возраст: 38

skyfish вне форума Не в сети
Цитата:
Сообщение от skyfish
P.S. поэлементное копирование в цикле не предлагать.
dev, но все же спасибо, за желание помочь.
  Ответить с цитированием
Старый 31.01.2008, 14:03   #10   
Форумец
 
Сообщений: 21
Регистрация: 10.10.2006

dev вне форума Не в сети
Цитата:
Сообщение от skyfish
Можно ли изящно скопировать строку из матрицы a[n][m] в вектор b[m]?
P.S. поэлементное копирование в цикле не предлагать.
посмотри apache commons, там есть какой-то метод - транспонирование 2-го массива. Хотя наверное это еще накладнее получится
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind