将HashMap列表检索到另一个列表中,一个键具有许多值

时间:2013-10-16 09:07:13

标签: java hashmap

我将值保存到Hashmap<String,Records> 示例值1,objRecord12,objRecord21,objRecord3等......我需要从字符串为1的hashmap中检索所有记录的值

等等 (我在这里搞乱) arrayList myArraylist=Hashmap.get(1);

6 个答案:

答案 0 :(得分:2)

在我看来,使用Multimap最简单。

http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html

如果你愿意在google commons上添加一个依赖关系:)

注意:这与apache commons的MultiMap(注意案例差异)不同。

答案 1 :(得分:0)

arrayList myArraylist=Hashmap.get("1");

要满足您的Hashmap声明必须

Map<String,List<Record>> myMap = new HashMap<>();

添加list

时添加

添加到map的示例:

  if(myMap.containsKey("1")){
         myMap.put("1", myMap.get("1").add(new Record()));//record obj
      }else{
         List<Record> list = new ArrayList<>();
         list.add(record);
         myMap.put("1", list));
     }

返回

 List<Record> list = myMap.get("1");

答案 2 :(得分:0)

使用列表或设置为值,然后保持更新该列表或设置。

 Hashmap<String, ArrayList<Records>> 

答案 3 :(得分:0)

是否需要订购每个密钥的多个记录?如果是这样的话,那就像:

Map<String, List<Record>>

是合适的。否则,Guava MultiMap将是合适的。

答案 4 :(得分:0)

最好将List用作hashmap中的值。

类似于:HashMap<String, List<Record>>

如果您想在地图中放置记录,可以执行以下操作:

void insertRecord(String key, Record record){
    List<Record> records = map.get(key);
    if(records == null){
        records = new ArrayList<Record>();
        map.put(key, records);
    }
    records.add(record);
}

答案 5 :(得分:0)

如果您希望每个键有多个记录,那么最好使用值集记录

Map<String, Set<Record>>