powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Как правильно создать и считать коллекцию?
25 сообщений из 43, страница 1 из 2
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #37675051
regal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может лучше

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

Начинаете парсить, создаете объект тт, создаете пустой list, пока есть айтемы, вычитываете их по одному, создаете объект айтем, добавляете в list. Собственно и все
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675060
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А обязательно объекты делать? Можно через SAX или Digester написал классы, которые будут формировать запрос и отправлять.
А что за база? Для некоторых есть нормальные тулзы XML импорта.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675081
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, тут Java не нужна? Преобразовываем XML в SQL и выполняем консольной тулзой от сервера.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675084
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
регвырами разобрать. Будет быстро и просто.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #37675103
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv регвырами разобрать. Будет быстро и просто.
У вас есть проблема. Вы решили что регулярное выражение лучше всего подходит для её разрешения. Теперь у вас две проблемы.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675104
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты точно не стебешься?
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #37675159
redsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,

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

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

Относительно SAX, регулярных выражений, ...:
я сначала использовал библиотеку SimpleXML (т.е. SAX), но спросив совета перешёл на VTD-XML.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675162
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Android, XML, база данных. Жесть.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675438
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я конечно может чего и не понимаю, но зачем нужны коллекции для redskyСпарсиваю xml и потом в рамках одной транзакции загоняю всё в базу данных.
Я делал ту же самую задачу для андроида так, как писали старшие товарищи выше через SAX парсер.
Никаких коллекций вам не понадобиться, транзакция то одна, что мешает извлеченные данные сразу вставлять в БД? Экономия памяти+ скорость выполнения.
ЗЫ. IMHO быстрее sax парсера ничего нет.Парсил 30мб файл на андроиде с записью в БД. Действие заняло ~2 мин.
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675445
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А просветите, пожалуйста, что за злобные буратины шлют XML на мобилку? Тормозной формат неприспособленый ни для быстрого чтения, ни для быстрой передачи. Откуда он на мобиле берется?
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #37675529
OOsalivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redsky,
Можно использовать jaxb входит в состав jdk начиная с 5 - автоматически преобразует xml в объект
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675533
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OOsalivanredsky,
Можно использовать jaxb входит в состав jdk начиная с 5 - автоматически преобразует xml в объект
ТС упустил такую маааленькую деталь, как android . Хорошо хоть не j2me
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #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
Как правильно создать и считать коллекцию?
    #37675861
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczрА просветите, пожалуйста, что за злобные буратины шлют XML на мобилку? А что плохого в стандарте w3c?
2redsky
А что мешает воспользоваться тогда теплым ламповым stax от android?
...
Рейтинг: 0 / 0
Как правильно создать и считать коллекцию?
    #37675908
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczLeonidv регвырами разобрать. Будет быстро и просто.
У вас есть проблема. Вы решили что регулярное выражение лучше всего подходит для её разрешения. Теперь у вас две проблемы.
Цитата известна.

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


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