【问题标题】:How to set multiple data types in one HashMap?如何在一个 HashMap 中设置多种数据类型?
【发布时间】:2021-07-12 19:51:44
【问题描述】:

我正在尝试在我的 android 应用程序的 hashmap 中设置多个值。一些值是String,我要发送的一个值是我创建的对象数组OnlineTestResultPOJO。以下是我要实现的代码。

OnlineTestResultPOJO[] records = db.resultDao().getRecords();
HashMap<String, String> map = new HashMap<>();
map.put("dbname",dbname);
map.put("class",clas);
map.put("rollno",rollno);
map.put("access_token",accessToken);
map.put("records_arr", records);

显然它在最后一行给出了错误,因为它不是String,但是否可以将所有这些东西设置在一个HashMap 中?我尝试用String.valueOf(records) 包装它,但这会破坏对象的工作,产生意想不到的结果。任何替代解决方案来实现这一点?

【问题讨论】:

    标签: java android hashmap


    【解决方案1】:

    如下创建地图:

    HashMap<String, Object> map = new HashMap<>();
    

    【讨论】:

      【解决方案2】:

      只需像这样声明您的地图:

      HashMap<String, Object> map = new HashMap<>();
      

      例如值的对象类型。

      【讨论】:

        【解决方案3】:

        您可以将serializeObject 转为String,并将其作为String 保存到HashMap。

        // serialize the object
         try {
             ByteArrayOutputStream bo = new ByteArrayOutputStream();
             ObjectOutputStream so = new ObjectOutputStream(bo);
             so.writeObject(myObject);
             so.flush();
             serializedObject = bo.toString();
         } catch (Exception e) {
             System.out.println(e);
         }
        
         // deserialize the object
         try {
             byte b[] = serializedObject.getBytes(); 
             ByteArrayInputStream bi = new ByteArrayInputStream(b);
             ObjectInputStream si = new ObjectInputStream(bi);
             MyObject obj = (MyObject) si.readObject();
         } catch (Exception e) {
             System.out.println(e);
         }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-08
          • 2020-03-19
          • 2017-12-11
          • 2019-10-02
          • 1970-01-01
          相关资源
          最近更新 更多