java中泛型类型转换

在业务档口由于得到的数据全是 
List<Map<String,Object>>
由于最终要返回的数据全是 
List<Map<String,String>>
使用foreachmap.entrySet()来进行转换效率有点低,有木有更好的解决方案

心有法竹
浏览 748回答 1
1回答

月关宝盒

这个简单可以并行stream+map+collector很方便代码的话,我现在不方便敲代码,有时间给你补上,但是需要你们的项目支持jdk8更新(抱歉,刚上班,给你写了一下,你看看和你的业务匹配吗,另外试下效率,当然,还有改进的空间...)注意:业务方法用private修饰,避免暴露public&nbsp;class&nbsp;Test&nbsp;{&nbsp;&nbsp;public&nbsp;static&nbsp;void&nbsp;main(String[]&nbsp;args)&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;构造参数 &nbsp;&nbsp;&nbsp;&nbsp;List<Map<String,&nbsp;Object>>&nbsp;input&nbsp;=&nbsp;new&nbsp;ArrayList<Map<String,&nbsp;Object>>()&nbsp;{{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(Collections.singletonMap("one",&nbsp;1));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(Collections.singletonMap("two",&nbsp;2));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(Collections.singletonMap("three",&nbsp;3)); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;trimToSize(); &nbsp;&nbsp;&nbsp;&nbsp;}};&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;开始转换 &nbsp;&nbsp;&nbsp;&nbsp;List<Map<String,String>>&nbsp;output&nbsp;=&nbsp;input.parallelStream().map(Test::convert).collect(toList());&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;验证 &nbsp;&nbsp;&nbsp;&nbsp;output.forEach(m->{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m.forEach((k,&nbsp;v)->&nbsp;System.out.println(k&nbsp;+&nbsp;"\t"&nbsp;+&nbsp;v)); &nbsp;&nbsp;&nbsp;&nbsp;}); &nbsp;&nbsp;}&nbsp;&nbsp;/** &nbsp;&nbsp;&nbsp;*&nbsp;业务 &nbsp;&nbsp;&nbsp;*&nbsp;*/ &nbsp;&nbsp;private&nbsp;static&nbsp;Map<String,&nbsp;String>&nbsp;convert(Map<String,&nbsp;Object>&nbsp;map)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;Objects.requireNonNull(map); &nbsp;&nbsp;&nbsp;&nbsp;Map<String,&nbsp;String>&nbsp;&nbsp;result&nbsp;=&nbsp;new&nbsp;ConcurrentHashMap<>(map.size());&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;业务比较繁杂的,可以用compute方法 &nbsp;&nbsp;&nbsp;&nbsp;map.forEach((key,&nbsp;value)&nbsp;->&nbsp;result.put(key,&nbsp;value.toString()));&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;} }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java