带有Arraylist的Hashmap作为值Android

时间:2017-05-28 19:20:18

标签: android arraylist hashmap

我正在开发一个Android应用程序,我正在使用Hashmap存储一些数据,当我以这种方式定义Arraylist时应用程序正常工作

ArrayList<String> eventList = new ArrayList<>(); 

但是当我将其更改为:

时应用程序崩溃了
ArrayList<String> eventList = hmap.get(date);

我需要知道原因吗? 这是整个功能,以防你需要看看

HashMap<Date, ArrayList<String>> hmap = new HashMap<>();
void eventMaker(String d, String ev)  {
     Date date = null;
     try {
            date = df.parse(d);
     } catch (ParseException e) {
            e.printStackTrace();
     }
     long epoch = date.getTime();
     Event event = new Event(Color.RED,epoch,ev);
     compactCalendar.addEvent(event);
     ArrayList<String> eventList = new ArrayList<>();
     eventList.add(ev);
     hmap.put(date,eventList);
 }

2 个答案:

答案 0 :(得分:0)

您需要将Hashmap的值强制转换为所需类型。

  ArrayList<String> eventList =(ArrayList<String>) hmap.get(date);

答案 1 :(得分:0)

问题是我试图得到一个不存在的密钥的值,我解决了这个问题:

if(!hmap.containsKey(date)){
            ArrayList<String> eventList =new ArrayList<>();
            eventList.add(ev);
            hmap.put(date,eventList);
        }
        else{
            ArrayList<String> eventList = hmap.get(date);
            eventList.add(ev);
            hmap.put(date,eventList);
        }