我使用HashMap存储boolean类型的字典和indexName值。但是我注意到我的hashmap只有2个大小。为什么会发生这种情况?我该如何解决?
class MapView(ListView):
fields = ["name"]
model = Venue
queryset = Venue.objects.prefetch_related('offer_set')
template_name = "venues/venue_map.html"
答案 0 :(得分:0)
只需以这种方式更改地图声明:
Map<String, Boolean> metadatas = new HashMap<>();
和以这种方式放置的元数据:
metadatas.put(indexable.indexName(), indexable.dictionary());
也许这就是你真正想做的事情。
答案 1 :(得分:0)
您使用的是Map<Boolean,String>
,其中密钥为Boolean
,值为String
。
现在,Map
不支持重复密钥。
将键映射到值的对象。地图不能包含重复的键;每个键最多可以映射一个值。
因此,您将受限于密钥,因为Boolean
只能包含3个值true
,false
和null
...以及HashMap
允许null
键
此实现提供所有可选的映射操作,并允许空值和空键
您的最大尺寸为3。
答案 2 :(得分:0)
很明显,您使用布尔值作为哈希映射中的键。 现在对于Hashmap,下面是真的。 1.它应该有唯一的键(否则,它将覆盖与键对应存储的现有值)。 和 2.布尔值可以有两个值为true或false(不能为null), 所以地图中只有两个值。
如果您想要字典,则应修改MAP,如下所示。
Map<Integer, String> metadatas = new HashMap<Integer, String>();
索引:应该是一些数字,所以键是整数。 值应为String。