首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在HashMap中保存类型的多个值?

如何在HashMap中保存类型的多个值?
EN

Stack Overflow用户
提问于 2017-07-27 09:17:54
回答 3查看 3.3K关注 0票数 3

我需要用单键创建一个HashMap,它应该包含字符串、ArrayList、String、ArrayList类型的多个值。

例如,类型字符串的Msg,类型为groupdestId的ArrayList,类型字符串的id,类型为ArrayList的userdestId。

代码语言:javascript
运行
复制
HashMap<String,String> body = new HashMap<>();
body.put("message",Msg);
body.put("groupdestId",groupdestId);
body.put("id",id); 
body.put("destId",userdestId);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-07-27 09:18:27

只需将Map定义为

代码语言:javascript
运行
复制
Map<String, Object> body = new HashMap<>();

Map<String, Object>可以保存任何类型的值,因此也可以:

  • String
  • ArrayList<Integer>

如果您不知道需要存储哪些值(类型和名称),则此解决方案提供了最大的灵活性。

如果您确切地知道需要处理哪些数据,更好的解决方案是定义一个自定义类,其属性命名为Map的键。

代码语言:javascript
运行
复制
public class DataHolder {
    private String message;
    private List<Integer> groupdestId;
    private String id;
    private List<Integer> userdestId;

    // Add getters and setters
}

此外,如果您知道这些数据不会随时间而改变值,那么更好的解决方案是创建一个不变类,这样它就可以在多线程环境中共享,而不需要同步访问它们。

票数 7
EN

Stack Overflow用户

发布于 2017-07-27 09:33:18

首先,创建一个WrapperClass,在其中声明dataType。

代码语言:javascript
运行
复制
Class StringAndListWrapper{
    String stringValue;
    List<String> stringListValue;
    public StringAndListWrapper(){
       stringValue = new String();
       stringListValue = new ArrayList<>();
    }
}

然后您可以在HashMap中放置包装器,

代码语言:javascript
运行
复制
String Key = "your key";
HashMap<String, StringAndListWrapper> hmap = new HashMap<>();
StringAndListWrapper stringAndListWrapper = new StringAndListWrapper();
stringAndListWrapper.stringValue = "putYourStringValue";
stringAndListWrapper.stringListValue.add("add Elements Here");
hmap.put(key, stringAndListWrapper);
票数 5
EN

Stack Overflow用户

发布于 2017-07-27 09:22:59

如果您想存储多个类型

代码语言:javascript
运行
复制
HashMap<String,Object> body = new HashMap<>();'

通常,混合类型不鼓励,并确保在返回值时,您需要正确地检查。否则,您将出现类强制转换异常。

此外,您需要一个对象而不是映射,因为正如我所看到的,所有的键都是相关的。只需创建一个类并使用该类来存储这些属性。

代码语言:javascript
运行
复制
public class Body {

private String message;    
private int groupdestId;
private int id;
private List<String> vals;

// other attributes and getters/setters


}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45346415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档