Инициализирование 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;
        }
→ Ссылка