日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

guava 之 ImmutableMap 使用实例及好处

發布時間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 guava 之 ImmutableMap 使用实例及好处 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

ImmutableMap 的作用就是:可以讓java代碼也能夠創建一個對象常量映射,來保存一些常量映射的鍵值對。

分析以下情景,來具體討論這個的好處。

以下是在js前臺的代碼,假設現在有需求如下:
根據數據庫存的某個key字段,來獲得不同的提示名字。有以下3種處理方法
1:用 多個 if else 語句,只要新添加個字段,你就得添加個 if else ???,差評
2:用 switch case ?語句,只要新添加個字段,你就得添加個 case ??????,差評
3:用 對象映射 方法,如下所示。 新建字段,只需要添加一行就好 ??????,好評

下面比較幾種實現方法的

1.if else 語句和switch case 是一個水平的東西。

function getDevName(assetSubType){switch(assetSubType){case "router":assetSubType = "路由器";break;case "switchboard":assetSubType = "交換機";break;case "virtualMac":assetSubType = "虛擬機";break;case "physicalMac":assetSubType = "物理機";break;case "firewall":assetSubType = "防火墻";break;case "secretMac":assetSubType = "加密機";break;case "storage":assetSubType = "存儲";break;case "host":assetSubType = "主機";break;case "safetyEq":assetSubType = "安全設備";break;case "other":assetSubType = "其它";break;default:assetSubType = assetSubType;}return assetSubType; }

然后在其他地方調用的時候,具體調用。
getDevName(assetSubType);
看麻煩不。現在若要增加一個,你還得繼續修改代碼,添加一對 if else 或者 switch case。

3.然后是換成對象,然后以key value的形式去獲得值。

var assetSubTypeKeyValueMap = {"router": "路由器","switchboard": "交換機","virtualMac": "虛擬機","physicalMac": "物理機","firewall": "防火墻","secretMac": "加密機","storage": "存儲","host": "主機","safetyEq": "安全設備","other": "其它" };

然后再看這個的調用方式。
?

function getSubTypeName(assetSubType) {return assetSubTypeKeyValueMap[assetSubType]; }

性能優化的人,為什么就那么牛逼呢。

再看個類似的例子:

var inputDefObj = {30: "IP地址或地址段",31: "端口號或范圍",32: "IP地址或地址段",33: "端口號或范圍",34: "代碼值",38: "探針名稱",39: "網絡協議號(protocol)",40: "ipv6源IP(ipv6_src_addr)",41: "ipv6目標IP(ipv6_dst_addr)",42: "網絡協議名稱(protocol_map)",43: "輸入接口snmp(input_snmp)",};

//具體用法:

inputDefault.prop("placeholder", inputDefObj[key]);//key即為前面的數字,以此來獲得后面的提示語。

js里面可以很簡單的以key,value的形式建立常量對象,然后可以很方便的用key,得到value。

然而java的map也是可以的。具體怎么實現就看實例:

package com.lxk.guavaTest;import com.google.common.collect.ImmutableMap;import java.util.Map;/*** 定義一些常量Map<?,?>* <p>* Created by lxk on 2016/11/17*/ interface ConstantMap {Map<Integer, String> INTEGER_STRING_MAP =new ImmutableMap.Builder<Integer, String>().put(30, "IP地址或地址段").put(31, "端口號或范圍").put(32, "IP地址或地址段").put(33, "端口號或范圍").put(34, "代碼值").put(38, "探針名稱").put(39, "網絡協議號(protocol)").put(40, "ipv6源IP(ipv6_src_addr)").put(41, "ipv6目標IP(ipv6_dst_addr)").put(42, "網絡協議名稱(protocol_map)").put(43, "輸入接口snmp(input_snmp)").build(); }/*** guava ImmutableMap 測試實例* <p>* Created by lxk on 2016/11/14*/ public class ImmutableMapTest {public static void main(String[] args) {immutableMapTest();}/*** 測試 guava ImmutableMap*/private static void immutableMapTest() {Integer key = 30;System.out.println("key = " + key + "的提示語是:" + ConstantMap.INTEGER_STRING_MAP.get(key));} }

這個map里面key和value和我們用map是一樣的,可以任意對象。
方便在java代碼里面操作,使得switch case,又長又啰嗦又不好維護的if else語句,變得簡單愉快。

具體只有用了才知道。

這個算是編程思想上的進步吧


轉自:https://blog.csdn.net/qq_27093465/article/details/53212577?
?

總結

以上是生活随笔為你收集整理的guava 之 ImmutableMap 使用实例及好处的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。