Blackberry 从哈希表中删除数据
我在blackberry的persistent store获取的hashtable中添加了一些数据,使用案例就像每次我获得一些数据时都将其添加到persistent store。现在我的persistent store中已经有一些数据,我需要删除/更新这些数据,并添加该日期的新数据,但问题是数据被附加到同一日期,而没有删除该日期的旧数据Blackberry 从哈希表中删除数据,blackberry,vector,calendar,hashtable,Blackberry,Vector,Calendar,Hashtable,我在blackberry的persistent store获取的hashtable中添加了一些数据,使用案例就像每次我获得一些数据时都将其添加到persistent store。现在我的persistent store中已经有一些数据,我需要删除/更新这些数据,并添加该日期的新数据,但问题是数据被附加到同一日期,而没有删除该日期的旧数据 public Hashtable getUserInfo() { Hashtable eventBean = null; store = Per
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");
}
}
}
}
使用以下代码从位置i处的向量中删除元素
vector.removeElementAt(i);
然后将这个向量添加到持久存储中。每次更新向量并将向量添加到存储中。您只需清除为日期存储的向量中的旧数据:
// 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);
}
//更改了它
if(listUserEvents.containsKey(usrDate)){
Vector info=(Vector)listUserEvents.get(usrDate);
System.out.println(“getEvents中的大小为”+
info.size());
info.removeAllElements();//clear()不是vector下的方法,我正在获取clear()无法解析,因为我有like vector info=(vector)listUserEvents.get(usrDate);哈希表类型转换为vector@user1195292-很抱歉。我忘了Vector
的黑莓API不包括clear()
方法。改用removalelements()
。我更新了代码以显示。