Java 是否可以将地图的值分为两种类型? @实体 @吸气剂 @塞特 @诺尔格构装师 公开课通知{ @身份证 私有字符串id; 私有字符串名称; 私有字符串标签; 私有字符串notificationType; @元素集合 @MapKeyColumn(name=“notificationType”) @列(name=“value”) @CollectionTable(name=“type\u attributes”,joinColumns=@JoinColumn(name=“notification\u id”)) 私人地图信息; }

Java 是否可以将地图的值分为两种类型? @实体 @吸气剂 @塞特 @诺尔格构装师 公开课通知{ @身份证 私有字符串id; 私有字符串名称; 私有字符串标签; 私有字符串notificationType; @元素集合 @MapKeyColumn(name=“notificationType”) @列(name=“value”) @CollectionTable(name=“type\u attributes”,joinColumns=@JoinColumn(name=“notification\u id”)) 私人地图信息; },java,spring-data-jpa,Java,Spring Data Jpa,我应该按两种类型保存at info。 我的样本如下: 1. If key is A info : {"A" : "A Value"} 2. If Key is B info : {"B" : ["Item1", "Item2"]} 所以我不知道如何解决这个问题。 请建议哪种方法好。如果要将不同类型的对象保存为值(例如,两者都是字符串),可以使用数组作为值。 e、 g 私有地图信息; 然后使用json。它将保留您的数据结构,并且易于获取您想要的值 private List<JsonObje

我应该按两种类型保存at info。 我的样本如下:

1. If key is A
info : {"A" : "A Value"}
2. If Key is B
info : {"B" : ["Item1", "Item2"]}
所以我不知道如何解决这个问题。
请建议哪种方法好。

如果要将不同类型的对象保存为值(例如,两者都是字符串),可以使用数组作为值。 e、 g

私有地图信息;

然后使用json。它将保留您的数据结构,并且易于获取您想要的值

private List<JsonObject> info;

or

private List<String> info; //JsonString
私有列表信息;
或
私人名单信息//JsonString

只需使用“Multimap”而不是“Map”。

我认为,解决问题的好办法是:

Multimap<String, String> myMultiMap = LinkedListMultimap.create();
Multimap myMultiMap=LinkedListMultimap.create();

尝试使用Multimap而不是Map

确保您提供了清晰的需求描述。@Jagadeesh我只需要字符串或在我的Map值中列出两种类型;您可以使用
HashMap
,它是键值对。因此,如果键是
A
,您可以在任何特定原因下持有两个值,将值设置为
String
?您仍然可以将值设置为
List
,并将单个字符串值添加到列表中。@madhubat我认为,在info的属性中出现相同的json格式:仅数组样式我尝试过,但实体管理器工厂拒绝为未定义的类
Object
添加
string
List
如何将值添加到多重映射中?您将如何声明此
MultiMap
对象?MultiMap就像一个以键为字符串、以值为列表的映射。它与这里的OP的
Map
有何不同?根据您的逻辑,您将首先在列表中添加项,然后将此列表添加到您的映射中。在我的例子中,您只需简单地使用multimap.put(“key”,“value1”)就可以了。multimap是如何声明的?我尝试了
multimap info
与上面的描述相同,但我得到了一个例外:
非法尝试将非集合映射为@OneToMany、@ManyToMany或@CollectionFelements
我没有理解您的意思??您可以编辑以前的答案,而不是编写另一个答案。
Multimap<String, String> myMultiMap = LinkedListMultimap.create();