List<String> DBTypes = Arrays.asList("Oracle", "SYBASE","MYSQl子对象");
List<String> JMXTypes = Arrays.asList( "消息中间件", "JBoss子对象", "Tomcat子对象", "Apache子对象");
List<String> HOSTTypes = Arrays.asList("HOST", "主机子对象");
List<String> WMITypes = Arrays.asList("Windows单进程", "Windows");
像上面这样的场景你肯定遇到过。几个子类型,对应一个父类型,这可能有多个集合。那么如果我需要根据一个子类型,找到它对应的父类型,我就要遍历每个集合的子类型。而且由于HashMap的键不能重复,因此这种数据没有办法转成Map来操作。
这时候我们可以调换下思路,HashMap中的键不能重复,但是值是可以重复的。我们完全可以把上面所有的子类型当做key,其父类型当做value,存储到一个Map中去。下面我使用stream来把List转为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")));
于是所有的子类型和父类型的对应关系就都存到一个Map中去了,我们找起来就太方便了,一行代码搞定!
已有 22658 名学员学习以下课程通过考试
最需教育客户端 软件问题一手掌握
去 App Store 免费下载 iOS 客户端
点击加载更多评论>>