我需要用单键创建一个HashMap,它应该包含字符串、ArrayList、String、ArrayList类型的多个值。
例如,类型字符串的Msg,类型为groupdestId的ArrayList,类型字符串的id,类型为ArrayList的userdestId。
HashMap<String,String> body = new HashMap<>();
body.put("message",Msg);
body.put("groupdestId",groupdestId);
body.put("id",id); 
body.put("destId",userdestId);发布于 2017-07-27 09:18:27
只需将Map定义为
Map<String, Object> body = new HashMap<>();Map<String, Object>可以保存任何类型的值,因此也可以:
StringArrayList<Integer>如果您不知道需要存储哪些值(类型和名称),则此解决方案提供了最大的灵活性。
如果您确切地知道需要处理哪些数据,更好的解决方案是定义一个自定义类,其属性命名为Map的键。
public class DataHolder {
    private String message;
    private List<Integer> groupdestId;
    private String id;
    private List<Integer> userdestId;
    // Add getters and setters
}此外,如果您知道这些数据不会随时间而改变值,那么更好的解决方案是创建一个不变类,这样它就可以在多线程环境中共享,而不需要同步访问它们。
发布于 2017-07-27 09:33:18
首先,创建一个WrapperClass,在其中声明dataType。
Class StringAndListWrapper{
    String stringValue;
    List<String> stringListValue;
    public StringAndListWrapper(){
       stringValue = new String();
       stringListValue = new ArrayList<>();
    }
}然后您可以在HashMap中放置包装器,
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);发布于 2017-07-27 09:22:59
如果您想存储多个类型
HashMap<String,Object> body = new HashMap<>();'通常,混合类型不鼓励,并确保在返回值时,您需要正确地检查。否则,您将出现类强制转换异常。
此外,您需要一个对象而不是映射,因为正如我所看到的,所有的键都是相关的。只需创建一个类并使用该类来存储这些属性。
public class Body {
private String message;    
private int groupdestId;
private int id;
private List<String> vals;
// other attributes and getters/setters
}https://stackoverflow.com/questions/45346415
复制相似问题