как удалить данные из хеш-таблицы на определенную дату - PullRequest
0 голосов
/ 21 марта 2012

Я пытаюсь удалить данные из хеш-таблицы на определенную дату, хеш-таблица имеет тип (String, vector). Сначала я проверяю, содержит ли хеш-таблица usrDate, если да, тогда мне нужно удалить все данные из хеш-таблицы только дляusrDate и добавьте новые данные listEvents. Но содержимое из хеш-таблицы для других дат не должно быть удалено.

listEvents.addElement(eventBean);//new data is here
for (int i = 0; i < listEvents.size();i++) {
    EventData e = (EventData)listEvents.elementAt(i);
}

//checking if hashtable has given date
if (listUserEvents.containsKey(usrDate)) { 
    Vector info = (Vector)listUserEvents.get(usrDate);

    info.addElement(eventBean);
    listUserEvents.put(usrDate,info);
} else {                                             
    listUserEvents.put(usrDate,listEvents);
}

я просто хочу добавить listEvents в хеш-таблицу на указанную дату, не затрагивая другиеданные в хеш-таблице, в которой есть данные для некоторых других дат.

 private Hashtable getEvents(String usrDate, String timezone) {
               try {

                       listUserEvents = getUserInfo();
                       listEvents = new Vector();

                       Calendar calendarLocalEvent = Calendar.getInstance();
                       // fetches time zone
                       TimeZone timeZoneEvent = calendarLocalEvent.getTimeZone();
                       System.out.println("Time Zone first-->"
                                       + timeZoneEvent.getDefault());
                       if (timezone.equals(timeZoneEvent.getDefault())) {
                               ;
                       } else {
                               TimeZone timeZoneChange = TimeZone.getTimeZone(timezone);
                               System.out.println("Time Zone change-->" +timeZoneChange);
                               Device.setTimeZone(timeZoneChange);

                       }
                       EventList eventList = (EventList) PIM.getInstance().openPIMList(
                                       PIM.EVENT_LIST, PIM.READ_ONLY);

                       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");
                                       SimpleDateFormat sdf_start = new SimpleDateFormat("HH:mm");
                                       SimpleDateFormat sdf_start_min = new SimpleDateFormat("HH");
                                       String dateString = sdf.formatLocal(start);
                                       String timeString = sdf_start.formatLocal(start);
                                       String hour = sdf_start_min.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);
                                               EventData eventBean = new EventData();

                                               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");
                                                       SimpleDateFormat sdfTime = new SimpleDateFormat(
                                                                       "HH:mm");
                                                       SimpleDateFormat sdfhr = new SimpleDateFormat("HH");
                                                       String dateString1 =sdform.formatLocal(end);
                                                       String timeString1 =sdfTime.formatLocal(end);
                                                       String hr = sdfhr.formatLocal(end);
                                                       eventBean.setStartHr(hour);
                                                       eventBean.setEndHr(hr);
                                                       eventBean.setStartTime(timeString);
                                                       eventBean.setEndTime(timeString1);
                                                       eventBean.setStartDate(dateString);
                                                       eventBean.setEndDate(dateString1);

                                                       // Dialog.alert("equal startdate" + dateString);
                                                       // Dialog.alert("equal end date"+ dateString1);
                                               }
                                               if (eventList.isSupportedField(Event.LOCATION)
                                                               && event.countValues(Event.LOCATION) > 0) {
                                                       String location = event
                                                                      .getString(Event.LOCATION, 0);
                                                       eventBean.setLocation(location);
                                                       // Dialog.alert("equal location"+ location);
                                               }
                                               if (eventList.isSupportedField(Event.SUMMARY)
                                                               && event.countValues(Event.SUMMARY) > 0) {
                                                       String subject = event.getString(Event.SUMMARY, 0);
                                                       eventBean.setSummary(subject);
                                                       // Dialog.alert("equal subject" +subject);
                                               }
                                               eventBean.setUserDate(usrDate);
                                               eventBean.setTimeZone(timezone);
                                               listEvents.addElement(eventBean);
                                               System.out.println("the size bf hashis"
                                                               + listEvents.size());
                                               for (int i = 0; i < listEvents.size();i++) {
                                                       EventData e = (EventData)listEvents.elementAt(i);
                                                       System.out.println("so thesummary is ::"
                                                                       + e.getSummary());
                                               }
                                         //  for(int i=0;i<listUserEvents.size();i++){
                                               if (listUserEvents.containsKey(usrDate)) {

                                                    //  listUserEvents.remove(usrDate);
                                                       Vector info = (Vector)listUserEvents.get(usrDate);
                                                       System.out.println("the size in getEvents is"
                                                                       + info.size());
                                                       if(info.contains(usrDate)){
                                                           System.out.println("in info");
                                                       } 
                                                       info.addElement(eventBean);
                                                       System.out.println("vector size info is"
                                                                       + info.size());
                                                       listUserEvents.put(usrDate,info);
                                               } else {
                                                       System.out.println("in else of getevent" +listEvents.size());
                                                       listUserEvents.put(usrDate,listEvents);
                                               }
                                        //    }

                                       } else {
                                               // Dialog.alert("not equal");
                                       }

                               }

                       }
                       Device.setTimeZone(timeZoneEvent);
                       Calendar calendarLocalLastEvent = Calendar.getInstance();
                       // fetches time zone
                       TimeZone timeZoneEventLast =calendarLocalLastEvent.getTimeZone();
                       System.out.println("Time Zone last-->"
                                       + timeZoneEventLast.getDefault());

               } catch (PIMException e) {
                       // //Dialog.alert(e.getMessage());
               }
               System.out.println("size in hashtable " + listUserEvents.size());
               return listUserEvents;

       }

Ответы [ 2 ]

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

Должно быть что-то вроде этого

for(int i = 0; i<listUserEvents.size();i++)
{

    if (listUserEvents.containsKey(usrDate)){

     listUserEvents.remove(usrDate);

    }

}

0 голосов
/ 21 марта 2012

Вот простой пример того, как это работает:

    Hashtable<String, Integer> numbers = new Hashtable<String, Integer>();
    numbers.put("one", 1);
    numbers.put("two", 2);

    if (numbers.containsKey("two")) {
        numbers.put("two", 222);
    }

С чем вы сталкиваетесь? Кроме того, какой тип вашей клавиши Hashtable? Это java.util.Date или что-то еще?

...