В этой статье описываются простые способы создания карты с фиксированным (предопределенным) набором ключей.
Вариант первый: использование Ломбок и Джексон
При таком подходе мы создали бы простой класс. Этот класс будет иметь набор предопределенных полей. После создания объекта этого класса мы можем использовать Джексона для создания карты из этого объекта.
Вот фрагмент класса:
Джава
xxxxxxxxxx
1
2
3
class ClassWithPredefinedKeys {
4
private String prop1;
5
private String prop2;
6
}
Мы можем использовать Builder
аннотацию Lombok, чтобы получить более чистый синтаксис. Getter
Аннотаций позволяет Джексон доступ к значениям атрибутов.
Вам также может понравиться:
Реализация Java HashMap в двух словах .
Вот фрагмент реализации:
Джава
x
1
ClassWithPredefinedKeys builder
2
= ClassWithPredefinedKeys
3
.builder()
4
.prop1("value3")
5
.prop2("value4")
6
.build();
7
8
ObjectMapper mapper = new ObjectMapper();
9
System.out.println(mapper.convertValue(builder, Map.class));
Вариант второй: использование Lombok и Enum
В этом варианте мы будем использовать enum для предопределения ключей.
Вот фрагмент класса:
Джава
x
1
2
class ClassWithKeysInEnum {
3
4
public enum Properties {
5
prop1,
6
prop2
7
}
8
9
10
private Map<Properties,String> properties;
11
12
public Map<String, String> getProperties(){
13
Map<String, String> stringProperties = new HashMap<String, String>();
14
this.properties.forEach((key,value) -> {
15
stringProperties.put(key.toString(), value);
16
});
17
return stringProperties;
18
}
19
20
}
Singular
Аннотаций также относится к Ломбкам . Это позволяет более читаемый синтаксис для создания коллекций (включая карты).
Вот как Карта может быть создана с использованием этого подхода:
Джава
x
1
System.out.println(
2
ClassWithKeysInEnum
3
.builder()
4
.property(Properties.prop1, "value1")
5
.property(Properties.prop2, "value2")
6
.build()
7
.getProperties()
8
);