1

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

类似的东西(我自己在这里搞砸了) arrayList myArraylist=Hashmap.get(1);

4

6 回答 6

2

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

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

也就是说,如果您愿意添加对 google commons 的依赖 :)

注意:这MultiMap与 apache commons 不同(注意大小写差异)。

于 2013-10-16T09:09:09.117 回答
0

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

Map<String, Set<Record>>
于 2013-10-16T09:16:32.050 回答
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");
于 2013-10-16T09:11:14.113 回答
0

使用列表或集合作为值,然后不断更新该列表或集合。

 Hashmap<String, ArrayList<Records>> 
于 2013-10-16T09:12:33.883 回答
0

是否需要订购每个键的多个记录?如果是这样,类似:

Map<String, List<Record>>

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

于 2013-10-16T09:13:13.090 回答
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);
}
于 2013-10-16T09:13:28.300 回答