конструктор для HashMap - PullRequest
       15

конструктор для HashMap

102 голосов
/ 08 сентября 2011

Guava предоставляет нам отличные фабричные методы для типов Java, такие как Maps.newHashMap().

Но есть ли также компоновщики для Java-карт?

HashMap<String,Integer> m = Maps.BuildHashMap.
    put("a",1).
    put("b",2).
    build();

Ответы [ 11 ]

0 голосов
/ 13 апреля 2017

Некоторое время назад у меня было похожее требование. Это не имеет ничего общего с Гуавой, но вы можете сделать что-то вроде этого, чтобы иметь возможность аккуратно построить Map, используя свободный строитель.

Создание базового класса, расширяющего Map.

public class FluentHashMap<K, V> extends LinkedHashMap<K, V> {
    private static final long serialVersionUID = 4857340227048063855L;

    public FluentHashMap() {}

    public FluentHashMap<K, V> delete(Object key) {
        this.remove(key);
        return this;
    }
}

Затем создайте беглого строителя методами, которые удовлетворяют вашим потребностям:

public class ValueMap extends FluentHashMap<String, Object> {
    private static final long serialVersionUID = 1L;

    public ValueMap() {}

    public ValueMap withValue(String key, String val) {
        super.put(key, val);
        return this;
    }

... Add withXYZ to suit...

}

Затем вы можете реализовать это так:

ValueMap map = new ValueMap()
      .withValue("key 1", "value 1")
      .withValue("key 2", "value 2")
      .withValue("key 3", "value 3")
...