Java操作應(yīng)用——鍵值對(duì)的key和value互換一下
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)題的答案?
- 開(kāi)始學(xué)習(xí)
海報(bào)設(shè)計(jì)精品錄播課程2121次觀(guān)看
開(kāi)始學(xué)習(xí)字體設(shè)計(jì)精品錄播課程2121次觀(guān)看
開(kāi)始學(xué)習(xí)室內(nèi)設(shè)計(jì)精品錄播課程2121次觀(guān)看
開(kāi)始學(xué)習(xí)影視動(dòng)畫(huà)精品錄播課程2121次觀(guān)看
開(kāi)始學(xué)習(xí)UI設(shè)計(jì)精品錄播課程2121次觀(guān)看
開(kāi)始學(xué)習(xí)
點(diǎn)擊加載更多評(píng)論>>