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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать массив объектов Object!? 
:(
    Опции темы
freshAngel
  Дата 12.12.2009, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет, делаю так.
Код


Vector<Object[]> hash = new Vector<Object[]>(0);
Object[] myList = new Object[]{};
myList[0] = "aa";
myList[1] = 5;
hash.addElement(myList);

if ((String)hash[0].[0].equals("aa")) System.out.println("OK"); // Здесь ошибка: Array required, Object[] found



Задача такая: Сделать массив содержащий значения с разными типами данных. (текстовые и числовые)
Сделал массив с типом Object, а потом делаю каст на нужный элемент, но не работает.
 smile 


PM MAIL   Вверх
m1ha
Дата 12.12.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



много ошибок...
Код

Object[] myList = new Object[]{};

Массивы должны знать свой размер ещё во время компиляции, в данном случае при инициализации получается пустой массив, то есть в него положить ничего нельзя будет в будушем
Код

myList[0] = "aa"; 

поэтому уже здесь ты получишь java.lang.ArrayIndexOutOfBoundsException
Код

myList[1] = 5;

Примитивы объектами не являются, используй объекты обёртки - new Integer(5);
Код

if ((String)hash[0].[0].equals("aa")) System.out.println("OK");

hash у тебя Vector (кстати лучше используй ArrayList), соответсвенно никаких [0] он не понимает. Кастуешь неправильно, по твоему коду ты хочегь сам массив в String закастовать.
Должно быть что то наподобие..
Код

if (((String)(hash.get(0)[0])).equals("aa")) {
    System.out.println("OK");
}

Думаю, что у тебя ещё проблема в дизайне, обычно подобные касты об этом сигнализируют
PM MAIL   Вверх
goodday1941
Дата 14.12.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 1
Всего: 9



используем класс вместо массива объектов
Код

public class SomeObject {
private String first;
private Integer second;
//getters & setters
}



ну и далее ArrayList(ну или LinkedList, зависит от размеров массива и от операций которые будут над ним проводиться) вместо Vector (не думаю что в вашем случае нужен функционал который дает Vector - синхронизированные методы):

Код

List<SomeObject> hash = new ArrayList<SomeObject>();
SomeObject so = new SomeObject();
so.setFirst("aa");
so.setSecond(5);
hash.add(so);
if (hash.get(0).getFirst().equals("aa")) {
System.out.println("OK");
}



--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
freshAngel
  Дата 14.12.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Код

Vector<String[]> hash = new Vector<String[]>(0);
String[] myList = new String[2];
myList[0] = "Hello1";
myList[1] = "Hello2";

hash.addElement(myList);

if (hash[0].[0].equals("Hello1")) { // Ошибка здесь: array required, but java.util.Vector<java.lang.String[]> found

}



Где ошибка!?
PM MAIL   Вверх
ivanovpv
Дата 14.12.2009, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


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

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



Цитата(freshAngel @  14.12.2009,  19:43 Найти цитируемый пост)
Где ошибка!? 


Сильно конечно... Зачем обращаться к вектору как массиву?

Код

String[] ml=hash.get(0);
if (ml[0].equals("Hello1"))  //надо что-то типа такого



Это сообщение отредактировал(а) ivanovpv - 14.12.2009, 21:05


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
freshAngel
  Дата 15.12.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Хотелось - бы конкретный маленький пример.
Как создать вектор, потом положить в вектор строковой массив и сделать каст для элемента массива из стринг в инт.
 smile 


Это сообщение отредактировал(а) freshAngel - 15.12.2009, 19:50
PM MAIL   Вверх
MaxPayneC
Дата 20.12.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 5
Всего: 9



Цитата(freshAngel @  15.12.2009,  19:50 Найти цитируемый пост)
Как создать вектор, потом положить в вектор строковой массив и сделать каст для элемента массива из стринг в инт.

Извиняюсь что без форматирования, пишу в браузере))

Код

String[] strings = new String[10];
String[0] = "0";
...
String[9] = "9";
Vector<String> v = new Vector<String>();
for (String s : strings)
{
v.add(s);
}

try
{
for (String s : v)
{
int x = Integer.parseInt(s);
System.out.println(x);
}
}
catch (NumberFormatException ex)
{
System.out.println("Ошибка при приведении строки к числу: " + ex.getMessage());
}

PM   Вверх
Sibit
Дата 21.12.2009, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ваш код, но без ошибок.

Код

            Vector<Object[]> hash = new Vector<Object[]>();
            Object[] myList = new Object[2];
            myList[0] = "aa";
            myList[1] = 5;// Здесь можно и new Integer(5), но сейчас и так работает. Только нужно помнить, что myList[1] станет Integer
            hash.addElement(myList);
            if (((String)hash.get(0)[0]).compareTo("aa")==0) System.out.println("OK");


Во втором сообщении m1ha подробно написал, где и как вы ошиблись.

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

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

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


 




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


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

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