位置:首頁 > 軟件操作教程 > 編程開發(fā) > Java > 問題詳情

Java操作應(yīng)用——鍵值對的key和value互換一下

提問人:ylm發(fā)布時(shí)間:2020-09-29

 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中去了,我們找起來就太方便了,一行代碼搞定!

 

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部