Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Можно ли скопировать массив в другой массив?


Автор: Б а Т о Н 16.2.2005, 01:24
Не могу разобраться...
Нужно такую вещь:

Код
String[] names = {"1", "2", "3", ....... };


скопировать вот сюда:

Код
Object[] objects


Какой код может это сделать?

Автор: Domestic Cat 16.2.2005, 01:28
Код

objects = new Object[names.length];
System.arraycopy(names,  0,  objects,  0,  names.length);

Автор: redrick 16.2.2005, 01:37
можно склонировать

http://java.sun.com/docs/books/jls/second_edition/html/arrays.doc.html#64347

но

Цитата
A clone of a multidimensional array is shallow, which is to say that it creates only a single new array. Subarrays are shared.


а вообще вроде вот

http://java.sun.com/docs/books/tutorial/java/data/copyingarrays.html

Автор: Б а Т о Н 16.2.2005, 01:42
спасибо большое за столь оперативный ответ!!!

кстати документация на java.sun.com мне очень нравится.
только сложно по ней искать что-то узкое и конкретное, имхо. может, я не прав.
Добавлено @ 01:44
Цитата(Domestic @ 16.2.2005, 01:28)
Код

objects = new Object[names.length];
System.arraycopy(names,  0,  objects,  0,  names.length);

Java не дает обратиться к свойству length
Может быть потому, что массив строк является статическим?

Автор: Domestic Cat 16.2.2005, 04:09
Как это не дает? Все работает, код компилируется.

Автор: Zandr 26.2.2005, 12:44
Просто стёб....
Код

Object[] array1 = new Object[] {
   new Object(),
   new Object(),
   new Object(),
   new Object(),
....
}
Object[] array2;

// находим длину
int len = 0;
try {
   while (true) {
       Object o = array1[len];
       len = 1 + len;
   }
} catch (Exception e) { }

array2 = new Object[len];

// копируем
int index = 0;
while (true) {
   if (index == len) break;
   array2[index] = array1[index];
   index = index + 1;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)