使用非唯一键创建深层列表

时间:2013-03-06 10:40:49

标签: java arrays list map

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

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> 

3 个答案:

答案 0 :(得分:0)

使用hashmap要求键是唯一的,否则 - 如何获得正确的值???

您可以使用HashMap<String, List<valueType>>

将多个值与一个键相关联

您可以使用:

HashMap<String, List<yourObject>>

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

在你的情况下:

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

如果您需要包含多个对象的集合,则可以使用List<yourObject>yourObject,就像您想要的那样(在示例中按住StringLinkedHashMap<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包含从键到两者的映射   值。