我创建了以下列表,但在第一个定义中我使用哈希映射(对于第一个字符串)但现在我不希望它是唯一的,我应该怎么定义它?
HashMap<String, LinkedHashMap<String, String>> entityList = new HashMap<String, LinkedHashMap<String, String>>();
由于这里定义了哈希映射,我可以在主列表中输入重复的条目, 我应该如何更改我的定义,以便我可以选择输入重复的条目。
我需要像以下结构一样构建它。
emp<name,test>
<lastname,lastname>
<salery,1000>
emp<firstname,dan>
<age,20>
adress<post,111>
<street,hhh>
答案 0 :(得分:0)
使用hashmap要求键是唯一的,否则 - 如何获得正确的值???
您可以使用HashMap<String, List<valueType>>
您可以使用:
HashMap<String, List<yourObject>>
所以每个键都有几个与。相关的对象。
在你的情况下:
HashMap<String, List<LinkedHashMap<String, String>>>
如果您需要包含多个对象的集合,则可以使用List<yourObject>
和yourObject
,就像您想要的那样(在示例中按住String
和LinkedHashMap<String, String>
)
我会使用第一个选择,但如果你真的不想要它 - 请使用List<yourObject>
答案 1 :(得分:0)
你真正想要的是,同样独特的关键 - 许多价值。 但是默认情况下,任何Map定义键都是唯一的。因为每个Map都执行与其关键的任何操作。 因此,最好为您的应用程序使用不同的结构。你可以尝试这样..
HashMap <String, Object> entityList = new HashMap<String, Object>();
LinkedHashMap<String, String> linkedHashmap = new LinkedHashMap<String, String>();
entityList.put("key1", updateObject(entityList.get("key1", newkey, new value);
public LinkedHashMap< String, String> updateObject(LinkedHashMap<String, String> linkedHashmap,String newKey,String newValue){
linkedHashmap.put(newKey,newValue);
return linkedHashmap;
}
答案 2 :(得分:0)
或者,您可以查看Guava MultiMap
<强>
public interface Multimap<K,V>
强>类似于Map的集合,但可以关联多个值 用一把钥匙。如果您使用相同的密钥拨打
put(K, V)
两次,但是 不同的值,multimap包含从键到两者的映射 值。