2012-03-21 5 views
0

特定の日付のハッシュテーブルからデータを削除しようとしています。ハッシュテーブルの型は(String、vector)です。最初にハッシュテーブルにusrDateが含まれているかどうかをチェックしていますusrDateのすべてのデータfrmハッシュテーブルを削除し、listEvents.Butという新しいデータを追加する必要がありますが、他の日付のハッシュテーブルのcontainsは削除しないでください。特定の日付のハッシュテーブルからデータを削除する方法

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; 

     } 
+0

まあ、ハッシュテーブルのキーは日付でなければならないか、ハッシュテーブルのすべてのエントリを反復処理する必要があります。エントリを削除したい場合は、 'remove(key)'で削除します。 –

+0

あなたの質問は不明です。あなたはどこで問題に直面していますか? –

+0

@HotLicks私はremove(key)を使用しましたが、うまくいきませんでした。スニペットを修正して例を表示してください。 –

答えて

1

それはここでは、この

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

    if (listUserEvents.containsKey(usrDate)){ 

    listUserEvents.remove(usrDate); 

    } 

}

+0

その機能していない私はここに全体の機能をコピーしましたhttp://codepad.org/6hFplePX –

+0

私はここにコードを貼り付けました –

+0

あなたはメインメソッドでクラス全体を貼り付けることができますか?私はそれがメイン投稿の私と他の人に役立つと思う。 – bentham

0

のようなものでなければなりません。

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なのですか?

+0

ハッシュテーブルはタイプ(文字列ベクトル) –

+0

私はhttp://codepad.org/6hFplePXのようにコードsomethinhを持っている、例外は例外を与えている –

+0

私は貼り付けているコード –

関連する問題