-2

I am facing an issue with hashtable. I am working with blackberry. In the below code the sysout "vector size info is" shows the data has two but the sysout "size in hashtable" shows the data has one. I do not understand this.

try {
  Hashtable listUserEvents = getUserInfo();
  Vector listEvents = new Vector();  
  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");
      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);

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

    System.out.println("size in hashtable "+listUserEvents.size());

Now if i loop over this hashtable using the below code i get the data in vector has one

Enumeration events = listEvent.keys();
                         while (events.hasMoreElements()) {
                                     String key = (String) events.nextElement();

                                    if (key.equals(label1.getText())) {

                                         Vector object = (Vector) listEvent.get(key);
                                         System.out.println("vector size"+object.size());
                                          Enumeration hashtable = listEvent.keys();
                                          while (hashtable.hasMoreElements()) {
                                                String keys = (String) hashtable.nextElement();
                                                if (keys.equals(label1.getText())) {

                                                Vector data = (Vector) listEvent.get(keys);

the data here gives only one ,but above it shows two.

user1195292
  • 223
  • 1
  • 3
  • 13

2 Answers2

2

The size of your hashtable is one, because it only has one entry.

The size of your vector that you store in the hashtable will not be reflected in the size of the hashtable.

Mike Bockus
  • 2,049
  • 16
  • 23
1

There is only one item in Hashtable because you have only inserted one item - a list with two elements.

Jim
  • 21,521
  • 5
  • 49
  • 80