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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица с различными типами столбцов, внутреннее представление 
:(
    Опции темы
kashka
Дата 2.4.2008, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2004
Где: Wolfenbuettel, Ge rmany

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



Всем Servus!
Вообще то вопрос такой: есть таблица данных, столбцы могут быть разных типов (Float, String). Как эффективно выбрать подходящий формат?  Например можно было бы сохранить как двумерный массив из Object, но тогда придется каждый раз кастинг делать. А с Generics тоже не совсем получается:
Код

public class Column<T> {
    private ArrayList<T> cl;
    private int type;

    public Column() {
        cl = new ArrayList<T>();
    }
    
    public ArrayList<T> getCl() {
        return cl;
    }

    public void setCl(ArrayList<T> cl) {
        this.cl = cl;
    }
    
    
    public T getElement(int j) {
        return cl.get(j);
    }
    

И основной класс для Таблицы:
Код


public class Table {
    
    ArrayList<Column> table = new ArrayList<Column>();
    
    public void addColumn(int type) {
        if(type == Constants.NUMMERIC){
            table.add(new Column<Float>());
            Column<Float> c = table.get(0);
            ArrayList<Float> vC= c.getCl();
        }
    }
    
    public Column getColumn(int i){
        return table.get(i);
    }

}



Но проблема в том что в Table Column не параметризуем.
Как быть?
PM MAIL   Вверх
niasilil
Дата 3.4.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



я в String храню и parse делаю когда надо

Это сообщение отредактировал(а) niasilil - 3.4.2008, 00:21


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
w1nd
Дата 3.4.2008, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вертилятор
***


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

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



Цитата(niasilil @  3.4.2008,  00:21 Найти цитируемый пост)
я в String храню и parse делаю когда надо

С тем же учпехом можно параметризовать метод для доступа и замаскировать warnings. Будет шустрее ;)


--------------------
user posted imageuser posted image
PM MAIL ICQ   Вверх
niasilil
Дата 3.4.2008, 02:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(w1nd @ 3.4.2008,  00:23)
Цитата(niasilil @  3.4.2008,  00:21 Найти цитируемый пост)
я в String храню и parse делаю когда надо

С тем же учпехом можно параметризовать метод для доступа и замаскировать warnings. Будет шустрее ;)

это да. Только преимущество - когда в табличке меняешь значение, то оно String становится вроде как. Не надо заботиться о переводе туда обратно. 
Не знаю, если кто укажет более изящный способ, возьму на вооружение. 
от warnings мне почему то неспокойно как то. smile


--------------------
SCJP 5.0, SCJD
PM MAIL   Вверх
kashka
Дата 3.4.2008, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2004
Где: Wolfenbuettel, Ge rmany

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



Ну со Strings это понятно, каждый раз делать:
Код

try {
            float f = Float.parseFloat(string);
        } catch (NumberFormatException e) {
            
        }


Но не хотелось бы как впрочем и Casting тоже, я вот думала может можно как нибудь элегантнее сделать. 
PM MAIL   Вверх
kashka
Дата 3.4.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2004
Где: Wolfenbuettel, Ge rmany

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



Мне вот пока только две наиболее подходящие идеи в голову пришли. Поделить таблицы на  две таблицы, одна с float другая с String (в этом случае придется правда глобальные индексы столбцов хранить). Или сделать два метода 
Код


ArrayList <Float> getNumericColumn(){}

ArrayList <String> getNominalColumn{}



В этом случае надо будет сначала каждый раз спрашивать какого типа колонка. 
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.0980 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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