Удаление данных из хеш-таблицы - PullRequest
0 голосов
/ 16 марта 2012

Я добавляю некоторые данные в хеш-таблицу, извлеченные из постоянного хранилища в blackberry, вариант использования подобен каждой дате, когда я получаю некоторые данные, добавляю их в постоянное хранилище. Теперь у меня уже есть данные в постоянном хранилище на дату, которые мне нужныудалить / обновить его и добавить новые данные на эту дату, но проблема в том, что данные добавляются к той же дате, не удаляя старые данные на эту дату.

public Hashtable getUserInfo() {
    Hashtable eventBean = null;
    store = PersistentStore.getPersistentObject(0xeb263c815d29213aL);
    synchronized (store) {
        eventBean = (Hashtable) store.getContents();
        if (eventBean == null) {
            eventBean = new Hashtable();
        }
    }
    return eventBean;
}

private Hashtable getEvents(String usrDate, String timezone) {
    listUserEvents = getUserInfo();
    listEvents = new Vector();
    Enumeration events = eventList.items();
    while (events.hasMoreElements()) {
        System.out.println("in while");
        Event event = (Event) events.nextElement();

        if (eventList.isSupportedField(Event.START) &&
            event.countValues(Event.START) > 0)
        {
            long start = event.getDate(Event.START, 0);
            SimpleDateFormat sdf =
                new SimpleDateFormat("MMM dd,yyyy HH:mm");
            String dateString = sdf.formatLocal(start);

            SimpleDateFormat sdf1 =
                new SimpleDateFormat("MMM dd,yyyy");
            String date = sdf1.formatLocal(start);
            System.out.println("dates are :" +date+ "user" +usrDate);
            if (usrDate.equalsIgnoreCase(date)) {
                System.out.println("dates are equal:" +date);
                EventsBean eventBean = new EventsBean();

                if (eventList.isSupportedField(Event.END) &&
                    event.countValues(Event.END) > 0)
                {
                    long end = event.getDate(Event.END, 0);
                    SimpleDateFormat sdform =
                        new SimpleDateFormat("MMM dd, yyyy HH:mm");
                    String dateString1 = sdform.formatLocal(end);
                    eventBean.setStartDate(dateString);
                    eventBean.setEndDate(dateString1);
                }


                listEvents.addElement(eventBean);
                System.out.println("the size bf hash is" + listEvents.size());
                // changed it
                if (listUserEvents.containsKey(usrDate)) {
                    Vector info = (Vector) listUserEvents.get(usrDate);
                    System.out.println("the size in getEvents is" +
                                       info.size());
                    info.addElement(eventBean);
                    System.out.println("vector size info is" + info.size());
                    listUserEvents.put(usrDate, info);
                } else {
                    listUserEvents.put(usrDate, listEvents);
                }
            } else {
                // Dialog.alert("not equal");
            }
        }
    }
}

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Вам просто нужно очистить старые данные от вектора, сохраненного для даты:

            // changed it
            if (listUserEvents.containsKey(usrDate)) {
                Vector info = (Vector) listUserEvents.get(usrDate);
                System.out.println("the size in getEvents is" +
                                   info.size());
                info.removeAllElements(); // <=== clears the old data
                info.addElement(eventBean);
                System.out.println("vector size info is" + info.size());
                listUserEvents.put(usrDate, info);
            } else {
                listUserEvents.put(usrDate, listEvents);
            }
0 голосов
/ 16 марта 2012

Используйте следующий код для удаления элемента из вектора в позиции i.

vector.removeElementAt(i);

Затем добавьте этот вектор в постоянное хранилище. Каждый раз обновляйте вектор и добавляйте вектор в магазин.

...