亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中ImmutableMap怎么用

發布時間:2021-06-11 09:21:19 來源:億速云 閱讀:226 作者:小新 欄目:開發技術

這篇文章主要為大家展示了“java中ImmutableMap怎么用”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“java中ImmutableMap怎么用”這篇文章吧。

ImmutableMap:一個不可變集合

java中的Immutable對象:

簡單地說,如果一個對象實例不能被更改就是一個Immutable的對象,Java SDK提供的大量值對象,比如String等都是Immutable的對象。

創建ImmutableMap:

Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().build();

在創建時放值:

Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>()
    .put("k1","v1")
    .put("k2","v2")
    .build();

創建后不可變:

immutableMap.put("k1","v3");//會拋出java.lang.UnsupportedOperationException

ImmutableMap中key和value均不能為null,放入null值會拋出NPE

ImmutableMap的使用場景:

適合

1、確定性的配置, 比如根據不同的key值得到不同的請求url

2、寫單元測試

不適合

1、key, value為未知參數, 可能有null產生的情況

guava中ImmutableMap使用示例及好處

ImmutableMap是不可變的,線程安全的;它可以創建一些常量的映射鍵值對;他提供了很多的組合鍵值對的方法,源碼中使用了一個靜態內部類來組裝構建ImmutableMap,靜態內部類作為外部類的輔助構建ImmutableMap,內部使用final聲明了一個ArrayList變量。

public static class Builder<K, V>{
     final ArrayList<Map.Entry<K, V>> entries = Lists.newArrayList();
    public Builder() {}
    public Builder<K, V> put(K key, V value)
    {
      this.entries.add(ImmutableMap.entryOf(key, value));
      return this;
    }
    public Builder<K, V> put(Map.Entry<? extends K, ? extends V> entry)
    {
      K key = entry.getKey();
      V value = entry.getValue();
      if ((entry instanceof ImmutableEntry)) {
        Preconditions.checkNotNull(key);
        Preconditions.checkNotNull(value);
        Map.Entry<K, V> immutableEntry = entry;
        this.entries.add(immutableEntry);
      }
      else
      {
        this.entries.add(ImmutableMap.entryOf(key, value));
      }
      return this;
    }
    public Builder<K, V> putAll(Map<? extends K, ? extends V> map)
    {
      this.entries.ensureCapacity(this.entries.size() + map.size());
      for (Map.Entry<? extends K, ? extends V> entry : map.entrySet()) {
        put(entry.getKey(), entry.getValue());
      }
      return this;
    }
    public ImmutableMap<K, V> build()
    {
      return fromEntryList(this.entries);
    }
    private static <K, V> ImmutableMap<K, V> fromEntryList(List<Map.Entry<K, V>> entries)
    {
      int size = entries.size();
      switch (size) {
      case 0: 
        return ImmutableMap.of();
      case 1: 
        return new SingletonImmutableBiMap((Map.Entry)Iterables.getOnlyElement(entries));
      }
      Map.Entry<?, ?>[] entryArray = (Map.Entry[])entries.toArray(new Map.Entry[entries.size()]);
      return new RegularImmutableMap(entryArray);
    }
  }

之前我們判斷取值結果可以使用if else形式:

int a = 1;
        if(a == 1) {
            System.out.println(a);
        } else {
            System.out.println(a);
        }

或者使用switch方式:

 int a = 1;
        switch (a) {
        case 1:
            System.out.println(a);
            break;
        case 2:
            System.out.println(a);
        default:
            System.out.println(a);
            break;
        }

現在可以使用ImmutableMap集合來組裝鍵值對,這樣的組合方式既簡單又省去了大量多余的代碼:

ImmutableMap<String, Object> map = ImmutableMap .<String, Object>builder()
         .put("1", "1")
         .put("2", "2")
         .put("3", "3")
         .build();
ImmutableMap<String, String> map1 = ImmutableMap .<String, String>of("1", "2");

以上是“java中ImmutableMap怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

兰溪市| 乾安县| 台湾省| 东安县| 蓬溪县| 鄂州市| 绥中县| 长葛市| 甘泉县| 永定县| 安塞县| 南昌市| 宝鸡市| 双辽市| 太康县| 博罗县| 克拉玛依市| 岗巴县| 奇台县| 任丘市| 鸡西市| 西乌珠穆沁旗| 大悟县| 安庆市| 博乐市| 大港区| 竹山县| 七台河市| 鄂伦春自治旗| 梅河口市| 彩票| 遂宁市| 寿光市| 旬阳县| 阿合奇县| 汉源县| 海林市| 仲巴县| 忻州市| 德钦县| 大化|