1 Haziran 2020 Pazartesi

BiMap Arayüzü

Giriş
Açıklaması şöyle.
A bimap (or "bidirectional map") is a map that preserves the uniqueness of its values as well as that of its keys. This constraint enables bimaps to support an "inverse view", which is another bimap containing the same entries as this bimap but with reversed keys and values.
Bu arayüzden kalıtan bir sınıf HashBimap.
Bir diğeri ise ImmutableBiMap. ImmutableBiMap elemanların ekleme sırasını koruyor.

forcePut metodu
Şöyle yaparız.
cache.forcePut(3, URI.create("http://example.com"));
System.out.println(cache);
// {2=http://stackoverflow.com, 3=http://example.com}
getOrDefault metodu
Örnek
Elimizde şöyle bir kod olsun. ForwardingBiMap sınıfı normalde Guava ile gelmiyor ancak biz kendimiz kodluyoruz.
public abstract class ForwardingBiMap<K,V> implements BiMap<K,V> {

  protected abstract BiMap<K,V> delegate();

  // implement *all* other methods with the following pattern:
  // ReturnType method(ParamType param) {
  //   return delegate().method(param);
  // }

}
Şöyle yaparız. ForwardingBiMap nesnesi yaratılır
public static <K,V> BiMap<K, V> validating(BiMap<K,V> delegate) {
  Objects.requireNonNull(delegate);
  return new ForwardingBiMap<K,V>() {

    @Overridea
    protected BiMap<K,V> delegate() { return delegate; }

    @Override
    public V getOrDefault(Object key, V defaultValue) {
      // Implement your own validation here
      return super.getOrDefault(key, defaultValue);
    }
  };
}
inverse metodu
Şöyle yaparız.
BiMap<String,String> textMap  = HashBiMap.create();

textMap.put("id_1","She");
textMap.put("id_2","has");
textMap.put("id_3","a"); 
textMap.put("id_4","neck");
textMap.put("id_5","pain");
BiMap<String,String> idToText = textMap.inverse();

System.out.println(idToText.get("neck")); 
System.out.println(idToText.get("pain"));
put metodu
Şöyle yaparız.
BiMap<String, String> m = HashBiMap.create();
m.put("Foo", "Bar");
m.put("Baz", "Bar"); // Throws IllegalArgumentException "value already present"
putIfAbsent metodu
Şöyle yaparız.
cache.putIfAbsent(1, URI.create("http://example.com"));
cache.putIfAbsent(2, URI.create("http://stackoverflow.com"));
System.out.println(cache);
// {1=http://example.com, 2=http://stackoverflow.com}

Hiç yorum yok:

Yorum Gönder