话不多说直接上代码:
第一种是通过Type类型对集合进行一个分类操作这样代码比较简洁
/**string 对应list*/
Map<String, List<exTscmx>> map =
list.stream().collect(Collectors.groupingBy(exTscmx::getType));
/**string 对应model*/
Map<String, t_dangan> map =
list.stream().collect(Collectors.toMap(t_dangan::getProcode, t_dangan-> t_dangan));
/**string 对应String*/
Map<String, String> map =
list.stream().collect(Collectors.toMap(t_dangan::getFilename, t_dangan::getProcode));
第二种就是使用分类的方法进行分组的操作具体代码如下
Map<String, List<exTscmx>> map = new HashMap<String, List<exTscmx>>();
List<exTscmx> list = (假设这里边有值)
for (exTscmx ex : list) {
String type = ex.getType();
if (map.containsKey(type)) {
map.get(keyType).add(ex);
} else {
List<exTscmx> ls = new ArrayList<exTscmx>();
ls.add(ex);
map.put(type, ls );
}
}
通过操作字符串的stream流操作,为了方便查阅统一都放在这里
判空去重加拼接
List<String> strings =
Arrays.asList("abc", "123", "123", "123", "123", "deg", "123", "4561234", "");
strings.stream().
filter(String -> !String.isEmpty()).distinct().collect(Collectors.joining(","))
字符串截取转换成集合
/**这里按照 , 取出来List*/
List<String> collect =
Stream.of("a,a,dfd,df,zzz,1,2,4,5".split(",")).collect(Collectors.toList());
按照List某个值取出最大值通过stream流
/**这里按照code值取出来最大值*/
Optional<wf_code> opt=
audits.stream().max(Comparator.comparing(wf_code::getCode));
wf_code audit = opt.get();
接着记录 含有Bigdecimal类型的求和
取list中的某个值最大值,求和,平均值,最小值
/**
* 参数类型:(这块是摘抄的!)
* summarizingDouble 统计数据(double)状态, 其中包括count min max sum和平均值
* summarizingInt 统计数据(int)状态, 其中包括count min max sum和平均值
* summarizingLong 统计数据(long)状态, 其中包括count min max sum和平均值.
* summingInt 求和 返回int类型
* summingDouble 求和 返回double类型
* summingLong 求和 返回long类型
* counting 返回Stream的元素个数
* averagingDouble 求平均值 返回double类型
* averagingInt 求平均值 返回int类型
* averagingLong 求平均值 返回long类型
* maxBy 在指定条件下,返回最大值
* minBy 在指定条件下,返回最小值
*/
//普通类型
lstZbBid.stream().collect(Collectors.summingDouble(zb_bid::getWjsj)))
//或者这也也行
list.stream().mapToDouble(zb_bid->zb_bid.getWjsj().doubleValue())
.reduce(0, Double::sum);
//BigDecimal类型
lstZbBid.stream().map(zb_bid->zb_bid.getWjsj())
.reduce(BigDecimal.ZERO,BigDecimal::add)
//BigDecimal 类型保留两位 Objects为你的list集合
BigDecimal freightSum = objects.stream()
.map(Object :: getMoney)
.reduce(BigDecimal.ZERO,BigDecimal::add)
.setScale(2,BigDecimal.ROUND_DOWN);
//Integer类型 其他类型差不多
BigDecimal freightSum = objects.stream().map(Object :: getMoney)
.reduce(Integer::add);
Java8高效率循环
##这是Java8的循环逻辑,流式执行
objects.stream().forEach(o ->{
//逻辑代码
});
快速遍历Map
map.forEach((k,v) ->{
//k是key v是value 逻辑代码在这里写
});