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

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

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

 List<String> DBTypes = Arrays.asList("Oracle", "SYBASE","MYSQl子對(duì)象");

        List<String> JMXTypes = Arrays.asList( "消息中間件", "JBoss子對(duì)象", "Tomcat子對(duì)象",  "Apache子對(duì)象");

        List<String> HOSTTypes = Arrays.asList("HOST", "主機(jī)子對(duì)象");

        List<String> WMITypes = Arrays.asList("Windows單進(jìn)程", "Windows");

像上面這樣的場(chǎng)景你肯定遇到過(guò)。幾個(gè)子類(lèi)型,對(duì)應(yīng)一個(gè)父類(lèi)型,這可能有多個(gè)集合。那么如果我需要根據(jù)一個(gè)子類(lèi)型,找到它對(duì)應(yīng)的父類(lèi)型,我就要遍歷每個(gè)集合的子類(lèi)型。而且由于HashMap的鍵不能重復(fù),因此這種數(shù)據(jù)沒(méi)有辦法轉(zhuǎn)成Map來(lái)操作。

這時(shí)候我們可以調(diào)換下思路,HashMap中的鍵不能重復(fù),但是值是可以重復(fù)的。我們完全可以把上面所有的子類(lèi)型當(dāng)做key,其父類(lèi)型當(dāng)做value,存儲(chǔ)到一個(gè)Map中去。下面我使用stream來(lái)把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")));

于是所有的子類(lèi)型和父類(lèi)型的對(duì)應(yīng)關(guān)系就都存到一個(gè)Map中去了,我們找起來(lái)就太方便了,一行代碼搞定!

 

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

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