2012-03-16 220 views
0

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

回答

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

明确的()是没有根据载体的方法,我得到明确的()不能得到解决,因为我有一个像矢量信息=(矢量)listUserEvents.get(usrDate); 哈希表被输入为 – user1195292 2012-03-16 14:52:25

+0

@ user1195292 - 对不起。我忘了用于'Vector'的BlackBerry API不包含'clear()'方法。改为使用'removeAllElements()'。我更新了要显示的代码。 – 2012-03-16 17:38:44