2012-03-16 2 views
0

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

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"); 
      } 
     } 
    } 
} 

ответ

0

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

vector.removeElementAt(i); 

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

1

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

  // 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

ясно() не является метод под вектором, я получаю ясно() не может быть решена, потому что я, как Vector info = (Vector) listUserEvents.get (usrDate); Hashtable typecasted to vector – user1195292

+0

@ user1195292 - Извините. Я забыл, что API BlackBerry для 'Vector' не включает метод clear(). Вместо этого используйте 'removeAllElements()'. Я обновил код для показа. –

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