我一直试图通过翻译的值来组合facet,但我总是得到的只是List上的最后一个对象(没有数据集)。这是我试过的:
HashMap<String, List<Facet>> map = new HashMap<>();
for (Facet facet : getFacets()) {
map.put(facet.getTranslatedValue(), new ArrayList<com.schneider.gss.model.Facet>());
map.get(facet.getTranslatedValue()).add(facet);
}
你能提出什么建议吗?
答案 0 :(得分:2)
更改你的for循环,如下所示
for (Facet facet : getFacets()) {
if(map.get(facet.getTranslatedValue()) == null) {
map.put(facet.getTranslatedValue(), new ArrayList<com.schneider.gss.model.Facet>());
}
map.get(facet.getTranslatedValue()).add(facet);
}
答案 1 :(得分:1)
每次使用新的ArrayList获得相同的翻译值时,您都会覆盖列表。相反,您应该检查它是否存在:
HashMap<String, List<Facet>> map = new HashMap<>();
for (Facet facet : getFacets()) {
//get the list
ArrayList<com.schneider.gss.model.Facet> list = map.get(facet.getTranslatedValue());
//if list doesn't exist, create it
if(list == null) {
map.put(facet.getTranslatedValue(), new ArrayList<com.schneider.gss.model.Facet>());
}
//then add to list
map.get(facet.getTranslatedValue()).add(facet);
}
答案 2 :(得分:0)
在番石榴中有一个班级Multimap(或ArrayListMultimap)可以完全满足您的需求