Инициализирование HashMap
У меня есть данный блок кода:
private List<Attributes> uiAttributes = new ArrayList<>(0);
public List<Object> getAttributes() {
return uiAttributes.stream()
.map(attr -> new HashMap<String, Object>(){{put(attr.getName(), attr.getValue());}})
.collect(Collectors.toList());
}
Метод getAttributes() взвращает лист, для последующего прообразованию в json, но SonarLint ругается на данную реализацию attr.getName(), attr.getValue(), как можно иначе проинициализировать эти поля?
Ответы (1 шт):
Автор решения: Jackson750
→ Ссылка
Если нужна мапа тогда нужно сделать в таком виде
private List<Attributes> uiAttributes = new ArrayList<>(0);
public Map<String, Objects> getAttributes() {
Map<String,Objects> map = new HashMap<>();
for (Attributes i : uiAttributes) {
map.put(i.getName(),i.getValue());
}
return map;
}
№2
private List<Attributes> uiAttributes = new ArrayList<>(0);
public Map<String, Objects> getAttributes() {
Map<String,Objects> map = uiAttributes.stream()
.collect(Collectors.toMap(Attributes::getName, Attributes::getValue, (a, b) -> b));
return map;
}