java太啰嗦_Java8如何让自己的代码不那么啰嗦?!

Java 8 的新特性:Lamdba(匿名函数)

Stream(流)

接口新增了默认方法

这些改变会让你编程更容易,用不着再写一些啰嗦的代码。

1、比如你想在 Java 代码中按水果对象的重量去排序这个集合

/*** 水果* @author ConstXiong* @date 2020-03-11 12:29:02*/class Fruit {private String type;private String color;private double weight;public Fruit(String type, String color, double weight) {this.type = type;this.color = color;this.weight = weight;}public String getColor() {return this.color;}public double getWeight() {return this.weight;}public String getType() {return this.type;}@Overridepublic String toString() {return String.format("{type:%s,color:%s,weight:%s}", type, color, weight);}}

在 JDK 8 之前必须这么做

Collections.sort(list, new Comparator() {  @Override  public int compare(Fruit o1, Fruit o2) {    return o1.getWeight() >= o2.getWeight() ? 1 : -1;  }});

在 JDK 8 里面,你可以编写更为简洁的代码,这些代码读起来更接近问题的描述(按重量排序水果)

list.sort((Fruit f1, Fruit f2) -> f1.getWeight() >= f2.getWeight() ? 1 : -1);

list.sort(Comparator.comparing(Fruit::getWeight));

2、获取当前目录下的文件夹

在 JDK 8 之前必须这么做

File[] dirs = new File(".").listFiles(new FileFilter(){  public boolean accept(File file) {    return file.isDirectory();  }});

在 JDK 8 可以这么写

File[] dirs = new File(".").listFiles(File::isDirectory);

3、从水果的集合里获取苹果集合

在 JDK 8 之前必须这么做

List apples = new ArrayList();for (Fruit fruit : list) {  if ("苹果".equals(fruit.getType())) {    apples.add(fruit);  }}

在 JDK 8 可以这么写

List apples = list.stream()        .filter(f -> "苹果".equals(f.getType()))        .collect(Collectors.toList());

4、启动一个线程

JDK 8 之前

new Thread(new Runnable() {  @Override  public void run() {      System.out.println("a thread start");  }}).start();

JDK 8 可以这么写

new Thread(() -> System.out.println("a thread start")).start();

这些都得益于,Java 8 的新特性:Lamdba 表达式(匿名函数)、Stream(流)、接口支持默认方法。Lamdba 表达式:目的是将行为参数化,把函数当成一个参数,传递给方法。让 Java 支持了函数式编程的风格。

Stream(流):以声明的方式处理集合数据。把集合看作流, 流在管道中传输, 可以在管道的节点上对流数据进行筛选、排序、聚合等操作的处理。

接口支持默认方法:升级了集合的接口支持 Stream API,为了让基于 Java 8 之前版本不报错,接口中添加了 default 关键字修饰默认实现的方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值