2015-05-25 2 views
0

Я делаю проект по веб-соскабливанию с использованием ArrayLists. Когда я очищаю информацию, она возвращается как item [0] = pencil, item [1] = $1.50. Я бы хотел, чтобы эти элементы были вместе, или, если возможно, было бы еще лучше, если бы цены и предметы имели свой собственный идентификатор, но каждый из них был каким-то образом связан друг с другом, чтобы я мог ссылаться на каждую отдельно. Кроме того, иногда при очистке я получаю item [2] = paper, item [3] = $5.00, item [4] = wide bound college ruled, где item [4] представляет необязательное описание, которое было включено в элемент, который должен быть включен в ArrayList или в отдельный ArrayList, связанный с идентификаторами, как и раньше. Любые идеи приветствуются.Добавление элементов в ArrayList с разделением

+1

Почему бы не использовать HashMap с товаром с идентификатором и описанием, а стоимость - это цена? – John

ответ

2

Если вам нужно только имя и цена, ваше лучшее решение - использовать карту, работает как ArrayList < T>, но вместо одного элемента у вас есть пара < Key, Value>, like < карандаш, 1,50>. Если вам нужно больше, чем два значения я хотел бы предложить, чтобы создать свой собственный класс, например:

public class Item { 
     private String name; 
     private double price; 
     private String description; 
    } 

со всеми дополнительными методами вам нужно, а затем объявить ArrayList, как это;

ArrayList<Item> items = new ArrayList<>() 
+0

Ну, основная проблема, с которой я сталкиваюсь, заключается в том, что когда я очищаю информацию с помощью jsoup, возвращаемый документ выглядит следующим образом: 'Pencil $ 1.50 Ruler $ 3.00 Бумага $ 5,00 Широкий колледж управлялся', без разделения предметов, кроме пробелов. Мне нужны элементы, чтобы вернуться, как они есть, иначе я не буду знать, какие цены и описания соответствуют тем элементам. Чтобы добавить их на карту, это похоже на то, что мне нужно будет добавить каждое значение вручную, поскольку некоторые элементы имеют описание, а некоторые нет, и на странице слишком много элементов, чтобы сделать это таким образом, если я не просто чего-то не хватает. –

+0

Например: item [0] = Карандаш, позиция [1] = $ 1.50, позиция [2] = Линейка, позиция [3] = $ 3,00, позиция [4] = Бумага, позиция [5] = 5,00 $, пункт [6] = Высший колледж управлял'. Я не уверен, как я мог бы взять этот список и убедиться, что каждый элемент был помещен в соответствующую категорию, не заканчивая тем, что описание помещено в переменную 'name' или наоборот. –

+1

Я думаю, что у меня что-то не хватает (и теперь у вас, вероятно, есть решение), но вы можете захотеть найти отличия от имени и описания. Скажем, например, что, когда имя находится в элементе [n], вы знаете, что элемент [n + 1], безусловно, является ценой. Или, как я вижу, имена всегда начинаются с заглавных букв. Я не вижу более легкого решения этого. –

1

Было бы лучше, если бы у вас были какие-то измерите меня переменные элемента по вашему названию, цене и описанию.

Затем вы можете создать ArrayList для хранения всех ваших предметов.

1

Вы должны моделировать объект как класс, например «элемент», и добавлять каждое значение в качестве переменной класса. Например:

public class item{ 

    private String name; 
    private double price; 
    private String description; //If there's no description it could be null 

    // Constructor 
    ... 

    // Getters and setters 
    ... 
} 

Вам необходимо отформатировать цену как двойной.

+0

Как только я создаю класс 'item' Как я могу взять список' Pencil $ 1.50 Ruler $ 3,00 Бумага $ 5,00 Широкополосный колледж управляется', который возвращается из веб-скрепок и гарантирует, что 'wide bound college rululed' заканчивается тем, что устанавливается для переменной' description'? Страница, которую я соскабливаю, содержит сотни шаблонов, подобных этому, где есть необязательное описание, которое было выбрано, поэтому мне нужно, чтобы сеттер мог распознавать то, что есть и что не является переменной «имя». –

Смежные вопросы