Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Копирование массивов, метод toArray() 
V
    Опции темы
Sherst
Дата 21.9.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



Привет всем!
Я наверное туплю, и все же вопрос smile :

Допустим есть класс SelectItem

Код

class SelectItem {
 private String value;
 private String label;
 private String description;

 public String getDescription() {
   return description;
 }
 ppublic void setDescription(String description) {
   this.description = description ;
 }
 // И такие же get/set методы для всех полей-свойств класса
}


Есть ArrayList с заполненными данными:

Код

List t = new ArrayList();
t.add("fio1");t.add("fio2");t.add("fio3");


Необходимо создать массив ссылок SelectItem:
Код

SelectItem[] si = new SelectItem[t.size()];


И скопировать значения из ArrayList в массив SelectItem[].Вот тут и начинаются проблемы.Есть метод toArray:

Код

t.toArray(si);


Но здесь не понятно как инициализируются поля SelectItem - value, label, description
И соответсвенно получаю исключение ArrayStoreException
Вообщем вот такой вопрос.
И еще значения полей value, label, description должны быть одинаковыми
Код

st[0].value = "fio1" st[0].label = "fio1" st[0].description = "fio1"



За ранее спасибо.
PM MAIL   Вверх
powerOn
Дата 21.9.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Напиши свой метод копирования в массив, который учитывает все тонкости.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
COVD
Дата 21.9.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Метод toArray() возвращает Object[] ,  а toArray(objet) возвращает массив класса обьекта, который в аргументе. Обьект в аргументе должен быть того же класса, что и элементы в коллекции и кастинг внутри делается. Это просто для удобства, никаких чудес.

Код

HashMap map = new HashMap();
for(int i = 0 ; i < 10; i++){
 Integer n = new Integer(i); 
 map.put(n,n); 
}

Integer[] values = map.values().toArray(new Integer[]);


таким образом возвращается копия ссылок в виде массива размером 10. Синхронизировать эту операцию тоже самим надо, если необходимо.

Это сообщение отредактировал(а) COVD - 21.9.2006, 16:21
PM MAIL   Вверх
Sherst
Дата 21.9.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: нет
Всего: 2



to COVD 
Спасибо за разъяснения

PM MAIL   Вверх
VSergeyV
Дата 4.8.2009, 06:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Цитата(COVD @  21.9.2006,  15:56 Найти цитируемый пост)
Integer[] values = map.values().toArray(new Integer[]);

А у меня требует фигурные скобки {}, иначе array dimension missing
с ними работает
Код

Integer[] values = map.values().toArray(new Integer[]{});

jdk 1.6.0_11
Синтаксис чтоли поменяли?

Это сообщение отредактировал(а) VSergeyV - 4.8.2009, 06:19
PM MAIL ICQ   Вверх
4EJIOBEK
Дата 4.8.2009, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 95
Регистрация: 26.3.2007

Репутация: нет
Всего: 4



не поменяли, просто при создании массива нужно либо задавать размерность в [], либо инициализировать массив элементами в {елем1, елем2,...}
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1040 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.