stream api相关的用法
今天在公司的项目里用到了java8中的stream相关的api,原先需要利用guava中的Multimaps.index方法,可以用steam的api完美解决,并且代码量缩小了很多:
// guava库
// ImmutableListMultimap<String, OperatorSubscriptionResourceAPIVO> subscriptionApiMap = Multimaps.index(apiVoList, new Function<OperatorSubscriptionResourceAPIVO, String>() {
// @Nullable
// @Override
// public String apply(@Nullable OperatorSubscriptionResourceAPIVO vo) {
// return vo.getSubscription();
// }
// });
// stream api
Map<String, List<OperatorSubscriptionResourceAPIVO>> subscriptionApiMap =
apiVoList.stream().collect(Collectors.groupingBy(vo -> vo.getSubscription()));
这种利用pipline的api接口,之前在mongodb里碰到过,当时觉得也没有多优雅,没想到在java里用起来很爽。
还有类似的:
//Set<String> resourceGroupSet = new HashSet<>();
//for(OperatorSubscriptionResourceAPIVO vo : voList) {
// if(StringUtils.isNotBlank(vo.getResourceGroup())) {
// resourceGroupSet.add(vo.getResourceGroup());
// }
//}
// stream api
Set<String> resourceGroupSet = voList.stream()
.map(vo -> vo.getResourceGroup())
.filter(StringUtils::isNotBlank)
.collect(Collectors.toSet());
stream api的的其它用法,可以参考:
https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html
http://blog.csdn.net/liudongdong0909/article/details/77429875
目前看来guava库存在的价值就剩下一个cache了,看看什么时候jdk能加进来^_^

浙公网安备 33010602011771号