Java操作應(yīng)用——鍵值對的key和value互換一下
List<String> DBTypes = Arrays.asList("Oracle", "SYBASE","MYSQl子對象");
List<String> JMXTypes = Arrays.asList( "消息中間件", "JBoss子對象", "Tomcat子對象", "Apache子對象");
List<String> HOSTTypes = Arrays.asList("HOST", "主機(jī)子對象");
List<String> WMITypes = Arrays.asList("Windows單進(jìn)程", "Windows");
像上面這樣的場景你肯定遇到過。幾個子類型,對應(yīng)一個父類型,這可能有多個集合。那么如果我需要根據(jù)一個子類型,找到它對應(yīng)的父類型,我就要遍歷每個集合的子類型。而且由于HashMap的鍵不能重復(fù),因此這種數(shù)據(jù)沒有辦法轉(zhuǎn)成Map來操作。
這時(shí)候我們可以調(diào)換下思路,HashMap中的鍵不能重復(fù),但是值是可以重復(fù)的。我們完全可以把上面所有的子類型當(dāng)做key,其父類型當(dāng)做value,存儲到一個Map中去。下面我使用stream來把List轉(zhuǎn)為Map:
Map<String, String> map = Maps.newHashMap();
map.putAll(DBTypes.stream().collect(Collectors.toMap(Function.identity(), i -> "JDBC")));
map.putAll(JMXTypes.stream().collect(Collectors.toMap(Function.identity(), i -> "JMX")));
map.putAll(HOSTTypes.stream().collect(Collectors.toMap(Function.identity(), i -> "HOST")));
map.putAll(WMITypes.stream().collect(Collectors.toMap(Function.identity(), i -> "WMI")));
于是所有的子類型和父類型的對應(yīng)關(guān)系就都存到一個Map中去了,我們找起來就太方便了,一行代碼搞定!
點(diǎn)擊加載更多評論>>