集合类
排序:
list.sort((u1, u2) -> u1.getAge().compareTo(u2.getAge())); @see
//list转map
appleList.stream().collect(Collectors.toMap(Apple::getId, a -> a,(k1,k2)->k1));
//按条件过滤集合
proList.stream() .fliter((p) -> p.getPrice() <8000)optional 解决箭头代码
//结构类型
String brand = null;
if (null != person){
if (null != person.getCar()){
if (null != person.getCar().getWheel()){
brand = person.getCar().getWheel().getBrand();
}
}
}
//优化
Optional<Person> optional = Optional.ofNullable(person);
//如果为null 会有默认的 default 返回
brand = optional.map(p->p.getCar()).map(c->c.getWheel()).map(w->w.getBrand()).orElse("default")stream + parallelStream > foreach 效率
其中parallelStream 并行流需要分服务器类型使用
并行流默认都是用同一个默认的ForkJoinPool,这个ForkJoinPool的线程数和CPU的核心数相同。如果是计算密集型的操作,可以直接使用,也就是直接
list.parallelStream().forEach(e-> System.out.println(e));
那么非计算密集型计算机该怎么使用呢?
ForkJoinPool forkJoinPool = new ForkJoinPool(5);
forkJoinPool.submit(list.parallelStream().forEach(e-> System.out.println(e)));
并行流存在线程安全问题:
解决方案:list.parallelStream().forEachOrdered(i->_list.add(i));
或者将_list转为线程安全的集合
list.stream().parallel() <==> list.parallelStream()
版权声明:本文为PJF1501105594原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。