我正在将值保存到Hashmap<String,Records>
Sample value1,objRecord1
中2,objRecord2
,1,objRecord3
等等...我需要从字符串为 1 的 hashmap 中检索所有记录的值
类似的东西(我自己在这里搞砸了)
arrayList myArraylist=Hashmap.get(1);
Multimap
在我看来,使用 a是最简单的。
http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/Multimap.html
也就是说,如果您愿意添加对 google commons 的依赖 :)
注意:这MultiMap
与 apache commons 不同(注意大小写差异)。
如果您希望每个键有多个记录,那么最好使用记录集作为值
Map<String, Set<Record>>
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");
使用列表或集合作为值,然后不断更新该列表或集合。
Hashmap<String, ArrayList<Records>>
是否需要订购每个键的多个记录?如果是这样,类似:
Map<String, List<Record>>
适合。否则 Guava MultiMap 将是合适的。
最好使用 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);
}