-3

我创建了以下列表,但在第一个定义中我使用哈希映射(对于第一个字符串)但现在我不希望它是唯一的,我应该如何定义它?

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> 
4

3 回答 3

0

使用 hashmap 要求键是唯一的,否则 - 你怎么能得到正确的值???

您可以做的是将多个值与单个键相关联,使用HashMap<String, List<valueType>>

您可以使用:

HashMap<String, List<yourObject>>

所以每个键都有几个相关的对象。

在你的情况下:

HashMap<String, List<LinkedHashMap<String, String>>>

如果您需要一个包含多个对象的集合,您可以使用List<yourObject>andyourObject将随心所欲(在您的示例中保持 aStringLinkedHashMap<String, String>)。

我会使用第一选择,但如果你真的不想要它 - 使用List<yourObject>

于 2013-03-06T10:42:47.937 回答
0

你真正想要的是,相同的唯一键-多值。但是默认情况下,任何 Map 定义 Key 都是唯一的。因为每个 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;
}

于 2013-03-06T12:30:44.763 回答
0

或者,您可以查看Guava MultiMap

public interface Multimap<K,V>

类似于 Map 的集合,但可以将多个值与单个键相关联。如果您put(K, V)使用相同的键但不同的值调用两次,则多重映射包含从键到两个值的映射。

于 2013-03-06T13:01:49.080 回答