java 8 Lamda

集合类遍历

List<String> list = new ArrayList<>();
list.foreach(
	str ->{
		System.out.println(str);
	}
)
//相当于
for(String str: list){
  System.out.println(str);
}

排序和过滤

//定义一个实体类
public class User{
	private String name;
	private int age;
}
//过滤年龄小于18岁的用户
List<User> users = new ArrayList<>();
users = users.stream().filter(u-> u.getAge() >= 18).collect(Collectors.toList());
//按照年龄大小降序排序
users = users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());

stream并行读取文件

case: 将文件内容中所有包含关键词”keyWord”的行,以及关键词所在行下面的count行读到finalRe中。parallel()方法开启多核CPU并行读取,加快文件读取速度。

import java.nio.file.Files;

public List<String> analyseFile(int count, String log, String keyWord){
	int finalCount = 0;
	List<String> re = new LinkedList<>();
	AtomicLong t = new AtomicLong();
  AtomicBoolean flag = new AtomicBoolean(false);
	List<String> finalRe = new LinkedList<>();
	Stream<String> lines = Files.lines(Paths.get(log));
	lines.parallel().forEachOrdered(
	          ele-> {
	              if (ele.trim().contains(keyWord)) {
	                  finalRe.add(ele);
	                  t.getAndIncrement();
	                  flag.set(true);
	              }
	              if (flag.get() && t.get() <= finalCount){
	                  finalRe.add(ele);
	                  t.getAndIncrement();
	              }
	              if (flag.get() && t.get() > finalCount){
	                  t.set(0);
	                  flag.set(false);
	              }
	          }
      );
  lines.close();
	return finalRe;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值