String[] pf = {"电器_货值赔付","电器_服务赔付"}
List<String> pfList = Arrays.asList(pf);
将数组转为集合,通过java8流的方式来判断某一属性值是否存在于我们定义的变量中
String parameter1 = "电器_货值赔付";
wlfList.stream().filter(s->parameter1.indexOf(s) != -1).findFirst().isPresent()
将会返回true
String parameter2 = "电器";
wlfList.stream().filter(s->parameter2.indexOf(s) != -1).findFirst().isPresent()
返回false
通过java8将List通过某一属性过滤后转为list
List<bean> list = new ArrayList<>();
list.add("");
在使用java8时操作对象(list)不可以为空必须要有前序判断否则会报空指针
if(CollCollectionUtils.isNotEmpty(list)){
list.stream().filter(a ->条件).collect(Collectors.toList());
}
条件: 0 == a.getStatus()
"0".equals(a.getCurrentStatus())
parameter1.indexOf(s) != -1等
list转map
Map<String,bean> purComMap = list.stream()
.collect(Collectors.toMap(bean::getGoodsMxId, a->a));
Map<String,bean> proxySaleComMap = list.stream()
.collect(
Collectors.toMap(bean::getCommoditySkuId , (p) -> p , (k,v)->v)
);
list通过某一属性分组
Map<String,List<bean>> purStockGoodsMap = list.stream()
.collect(
Collectors.groupingBy(bean::getStockId)
);
Optional<bean> optional = list.stream().filter(a->条件)
.findAny();
optional.isPresent()-->true/false
例如:
list.stream()
.forEach(bean->{
if(!bean.stream()
.filter(bean->参数!=-1)
.findAny()
.isPresent()){
throw new ServiceException("操作失败",-70001,"service异常");
};
});
findAny()方法和findFirst()有什么区别呢?
findAny返回随机值
findFirst返回第一个
去出集合list中的某个属性下的list1
然后将list1的数据进行java8巨像后返回
List<String> snListAll =
liat.stream()
.filter(a->a.getCainiaoOrderSnList()!=null && a.getCainiaoOrderSnList().size()>0)
.flatMap(a->a.getCainiaoOrderSnList().stream())
.map(a->a.getSnCode().toUpperCase())
.collect(Collectors.toList())
;
与常规操作不通点我们引入了flatMap,这个在这里的主要作用是对流进行扁平化
java8排序
lsit = list.stream().sorted(Comparator.comparing(bean::getVo)).collect(Collectors.toList());
java8 forEach()方法使用
list.stream()
.forEach(bean->{
if(StringUtils.isEmpty(bean.getBoxId()))
throw new ServiceException("装箱算法失败",-70001,"service异常");
if(box.getWeightFactor()==0)
throw new ServiceException("装箱算法失败",-70001,"service异常");
});
java8合并数据
Map<String, bean> allotComLogMap = list.parallelStream()
.collect(Collectors.toMap(a -> a.getCommodityId() + a.getCommoditySkuId(), (p) -> p, (k, v) -> {
k.setQuantity(k.getQuantity().add(v.getQuantity()));
return k;
}));
map转list
new ArrayList<bean>(allotComLogMap.values())
java8返回BigDecimal
BigDecimal allotCount = allotLogList.stream().map(a -> {
if (a.getQuantity().compareTo(BigDecimal.ZERO) <= 0) {
throw new ServiceException("submit", -666, "service异常!");
} else {
return a.getQuantity();
}
}).reduce(BigDecimal.ZERO, (a, b) -> a.add(b));
java8返回boolean
boolean hasEfficaciousStoreout = list.stream()
.filter(a-> a.getFinishCommodityCount().compareTo(a.getCloseCommodityCount())!=0 )
.findAny()
.isPresent();
java8返回int
private Integer num
int qty = list.stream().collect(Collectors.summingInt(bean::getNum));