Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно создать и считать коллекцию? / 25 сообщений из 43, страница 1 из 2
22.02.2012, 20:09:42
    #37675017
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Всем Доброго вечера!

Спарсиваю xml в коллекцию и потом в рамках одной транзакции загоняю всё в базу данных .
Вопрос как правильно сделать коллекцию для моего случая?
Данные имеют вид:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Response>
 <TT>
  <Item A="..." B="..." C="..." ... />
  <Item A="..." B="..." C="..." ... />
  <Item A="..." B="..." C="..." ... />
  ...
 </T>
</Response>

Может мне создать отдельный класс и коллекцию обьектов этого класса например так:
Код: java
1.
2.
3.
4.
5.
6.
7.
public class TT {
	public String a;
	public String b;
	public String c;
}
//и потом:
private List<TT> TT;

но тогда как правильно заполнить в моём цикле эту коллецию TT ?
Код: java
1.
2.
3.
while (ap.evalXPath() != -1) {
???
}

и как потом её считать в цикле?
Код: java
1.
2.
3.
for (int i = 0; i < TT.size(); i++) {
???
}

Или лучше использовать ArrayList или HashTable или ... ?
Подскажите, пожалуйста.
...
Рейтинг: 0 / 0
22.02.2012, 20:36:28
    #37675051
regal
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
может лучше

public class TT {
Map Item = new HashMap(); //и сюда уже класть ваши айтемы и по ключу(АБС) потом доставать или через итератор
}
//и потом:
private List<TT> TT
...
Рейтинг: 0 / 0
22.02.2012, 20:37:17
    #37675053
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Ничего не понял, что у вас не получается.

Начинаете парсить, создаете объект тт, создаете пустой list, пока есть айтемы, вычитываете их по одному, создаете объект айтем, добавляете в list. Собственно и все
...
Рейтинг: 0 / 0
22.02.2012, 20:41:48
    #37675060
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
А обязательно объекты делать? Можно через SAX или Digester написал классы, которые будут формировать запрос и отправлять.
А что за база? Для некоторых есть нормальные тулзы XML импорта.
...
Рейтинг: 0 / 0
22.02.2012, 21:02:14
    #37675081
Alexander A. Sak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Может, тут Java не нужна? Преобразовываем XML в SQL и выполняем консольной тулзой от сервера.
...
Рейтинг: 0 / 0
22.02.2012, 21:09:07
    #37675084
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
регвырами разобрать. Будет быстро и просто.
...
Рейтинг: 0 / 0
22.02.2012, 21:17:10
    #37675087
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Мне надо понять как в цикле while заполнять свойства (a, b, c) для каждого элемента моей колекции tt ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
class TT {
	public String a;
	public String b;
	public String c;
}
...
private List<TT> tt;
...
int val=0;
while (ap.evalXPath() != -1) {
	val = vn.getAttrVal("A");
	if (val != -1) tt(???).add(TT.a=vn.toNormalizedString(val)); //vn.toNormalizedString(val) - выдаёт String

        val = vn.getAttrVal("B");
	if (val != -1) tt(???).add(TT.b=vn.toNormalizedString(val));

        val = vn.getAttrVal("C");
	if (val != -1) tt(???).add(TT.c=vn.toNormalizedString(val));
					
}



Ну а считывать я буду так
Код: java
1.
2.
3.
4.
5.
for (int i = 0; i < tt.size(); i++) {
tt.get(i).a;
tt.get(i).b;
tt.get(i).c;
}



Подскажите как заполнить коллекцию?
...
Рейтинг: 0 / 0
22.02.2012, 21:39:13
    #37675103
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Leonidv регвырами разобрать. Будет быстро и просто.
У вас есть проблема. Вы решили что регулярное выражение лучше всего подходит для её разрешения. Теперь у вас две проблемы.
...
Рейтинг: 0 / 0
22.02.2012, 21:39:39
    #37675104
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Ты точно не стебешься?
...
Рейтинг: 0 / 0
22.02.2012, 21:42:03
    #37675107
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class TT {
	public String a;
	public String b;
	public String c;
}
...
private List<TT> tt;
...
int val=0;
while (ap.evalXPath() != -1) {
        TT item = new TT();
	val = vn.getAttrVal("A");
	if (val != -1) TT.a=vn.toNormalizedString(val)); 

        val = vn.getAttrVal("B");
	if (val != -1) TT.b=vn.toNormalizedString(val));

        val = vn.getAttrVal("C");
	if (val != -1) TT.c=vn.toNormalizedString(val));
	tt.add(item);				
}



Такой говнокод не устраивает?
...
Рейтинг: 0 / 0
22.02.2012, 21:43:10
    #37675109
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
сорри, вот этот говнокод более правильный
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
class TT {
	public String a;
	public String b;
	public String c;
}
...
private List<TT> tt;
...
int val=0;
while (ap.evalXPath() != -1) {
        TT item = new TT();
	val = vn.getAttrVal("A");
	if (val != -1) item.a=vn.toNormalizedString(val)); 

        val = vn.getAttrVal("B");
	if (val != -1) item.b=vn.toNormalizedString(val));

        val = vn.getAttrVal("C");
	if (val != -1) item.c=vn.toNormalizedString(val));
	tt.add(item);				
}
...
Рейтинг: 0 / 0
22.02.2012, 22:52:28
    #37675159
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
забыл ник,

Только ещё я забыл инициализировать колекцию:
Код: java
1.
List<TT> tt = new ArrayList<TT>();

БОЛЬШОЕ СПАСИБО, то, что и искал !!!

Относительно SAX, регулярных выражений, ...:
я сначала использовал библиотеку SimpleXML (т.е. SAX), но спросив совета перешёл на VTD-XML.
...
Рейтинг: 0 / 0
22.02.2012, 22:58:41
    #37675162
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Android, XML, база данных. Жесть.
...
Рейтинг: 0 / 0
23.02.2012, 12:42:51
    #37675438
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
Я конечно может чего и не понимаю, но зачем нужны коллекции для redskyСпарсиваю xml и потом в рамках одной транзакции загоняю всё в базу данных.
Я делал ту же самую задачу для андроида так, как писали старшие товарищи выше через SAX парсер.
Никаких коллекций вам не понадобиться, транзакция то одна, что мешает извлеченные данные сразу вставлять в БД? Экономия памяти+ скорость выполнения.
ЗЫ. IMHO быстрее sax парсера ничего нет.Парсил 30мб файл на андроиде с записью в БД. Действие заняло ~2 мин.
...
Рейтинг: 0 / 0
23.02.2012, 12:48:57
    #37675445
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
А просветите, пожалуйста, что за злобные буратины шлют XML на мобилку? Тормозной формат неприспособленый ни для быстрого чтения, ни для быстрой передачи. Откуда он на мобиле берется?
...
Рейтинг: 0 / 0
23.02.2012, 13:47:49
    #37675514
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
TrogloditЯ конечно может чего и не понимаю, но зачем нужны коллекции для redskyСпарсиваю xml и потом в рамках одной транзакции загоняю всё в базу данных.
Я делал ту же самую задачу для андроида так, как писали старшие товарищи выше через SAX парсер.
Никаких коллекций вам не понадобиться, транзакция то одна, что мешает извлеченные данные сразу вставлять в БД? Экономия памяти+ скорость выполнения.
ЗЫ. IMHO быстрее sax парсера ничего нет.Парсил 30мб файл на андроиде с записью в БД. Действие заняло ~2 мин.1. Коллекция нужна была мне для разделения спарсивания и записи в БД. Мне надо было увидеть время выполнения и того и другого.
2. Время после выделения в коллекцию как было 1,5-2 сек. так и осталось (на парсинг + запись в БД)
3. Относительно скорости:
- из описания SimpleXML "Developing XML configuration and communication systems can be done much quicker than through the use of XML frameworks such as DOM, SAX, and even other frameworks such as Digester and XStream."
- сравнительные тесты скорости: тут
- и в моём случае прирост в 4 раза
4. У меня файл размером в 700Kb., т.е. в памяти он занимал приблизительно столько же и ради прироста скорости и поменял парсер. Если бы файл был 30 метров, конечно бы отказался от этой затеи.
BlazkowiczА просветите, пожалуйста, что за злобные буратины шлют XML на мобилку? Тормозной формат неприспособленый ни для быстрого чтения, ни для быстрой передачи. Откуда он на мобиле берется? Бывают вот такие злобные разработчики ))
...
Рейтинг: 0 / 0
23.02.2012, 14:05:47
    #37675529
OOsalivan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
redsky,
Можно использовать jaxb входит в состав jdk начиная с 5 - автоматически преобразует xml в объект
...
Рейтинг: 0 / 0
23.02.2012, 14:09:26
    #37675533
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
OOsalivanredsky,
Можно использовать jaxb входит в состав jdk начиная с 5 - автоматически преобразует xml в объект
ТС упустил такую маааленькую деталь, как android . Хорошо хоть не j2me
...
Рейтинг: 0 / 0
23.02.2012, 14:09:29
    #37675534
redsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
OOsalivanredsky,
Можно использовать jaxb входит в состав jdk начиная с 5 - автоматически преобразует xml в объект С http://stackoverflow.com "... JAXB isn't included in android by default and the library will cost you 9(!) MB of your apk. Try SimpleXML instead. It has similiar abilities and much more lightweight."
...
Рейтинг: 0 / 0
23.02.2012, 20:31:00
    #37675861
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
BlazkowiczрА просветите, пожалуйста, что за злобные буратины шлют XML на мобилку? А что плохого в стандарте w3c?
2redsky
А что мешает воспользоваться тогда теплым ламповым stax от android?
...
Рейтинг: 0 / 0
23.02.2012, 21:41:41
    #37675908
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
BlazkowiczLeonidv регвырами разобрать. Будет быстро и просто.
У вас есть проблема. Вы решили что регулярное выражение лучше всего подходит для её разрешения. Теперь у вас две проблемы.
Цитата известна.

Поясните, почему использование xml-парсера для решения данной конкретной задачи лучше, чем регулярные выражения?
...
Рейтинг: 0 / 0
23.02.2012, 22:21:52
    #37675934
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
TrogloditА что плохого в стандарте w3c?
Он ресурсоёмкий и избыточный.
...
Рейтинг: 0 / 0
24.02.2012, 18:30:09
    #37677446
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
BlazkowiczОн ресурсоёмкий и избыточный.
А какая разумная альтернатива для таких задач?
Собственные велосипеды писать? XML устоявшийся стандарт, в котором можно описать любую структуру, проверить корректность данных и плюс наличие множества библиотек по обработке xml заставляет меня остановить свой выбор именно на нем.
...
Рейтинг: 0 / 0
24.02.2012, 18:34:33
    #37677458
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
TrogloditА какая разумная альтернатива для таких задач?
Собственные велосипеды писать? XML устоявшийся стандарт, в котором можно описать любую структуру, проверить корректность данных и плюс наличие множества библиотек по обработке xml заставляет меня остановить свой выбор именно на нем.
http://www.4feets.com/2009/08/serializing-data-json-vs-protocol-buffers/
...
Рейтинг: 0 / 0
24.02.2012, 18:37:36
    #37677465
Troglodit
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как правильно создать и считать коллекцию?
redsky- и в моём случае прирост в 4 раза
4. У меня файл размером в 700Kb., т.е. в памяти он занимал приблизительно столько же и ради прироста скорости и поменял парсер. Если бы файл был 30 метров, конечно бы отказался от этой затеи.
В данном примере вы не использовали sax,соответственно сравнение неуместно. То , что DOM тормозной и прожорливый-это не секрет.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно создать и считать коллекцию? / 25 сообщений из 43, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]