栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java 8——Lambda和stream

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java 8——Lambda和stream

一、stream

可用理解stream流也是一个集合,利用流(这个集合)的方法可以处理集合里面元素。比如:选出集合中最大的元素【max()】、统计集合有多少个元素【count()】、过滤掉一些元素【filter()】等。

(一)获取对象

获取stream对象有一下几种方法

 //1. 调用Arrays的方法静态方法stream()
String[] arr = {"1", "2", "3","c","c"};
Stream stream = Arrays.stream(arr);

//2.直接获取,注意Stream是一个接口,of()方法是一个接口里面有方法体的方法
Stream stream1 = Stream.of("a", "b", "c");

// 3. Map,获取entrySet调用stream方法
Map map = new HashMap<>();
map.put(1, "a");
map.put(2, "b");
map.put(3, "c");
Stream> stream2 = map.entrySet().stream();

//4.获取文件的stream流
try {
    Stream lines = Files.lines(Paths.get("文件路径名"), Charset.defaultCharset());
} catch (IOException e) {
    e.printStackTrace();
}
(二)操作方法

有了对象之后就能调用方法。
stream 对象为我们提供了很对操作集合的方法。具体方法的使用可以参考文档。

二、Lambda

Lambda表达式用得最多的就是匿名子类。它可以简化匿名子类的编写。
以最常见的Runnable接口举例。

(一)什么是匿名子类
  1. 先理解匿名对象
//一般对象
String a = new String("123");

//像这个就是匿名对象(没有名字,只能使用一次)
new String("123");
//使用匿名对象
new String("123").equals("123"); //结果为ture
  1. 匿名子类(没有名字的子类)
  • 有名字的子类,名字是LambdaTest
public class LambdaTest implements Runnable {
    @Override
    public void run() {
        
    }
}
  • 匿名子类(这个类只能使用一次)
//创建了一个匿名子类,并且使用这个类new了一个匿名对象
new Runnable() {
    @Override
    public void run() {
        System.out.println("123");
    }
};
(二)Lambda表达式式
  1. 无参数
//创建一个线程
new Thread(new Runnable() {
   @Override
    public void run() {
        System.out.println("123");
    }
}).start();
//同样创建了一个线程
new Thread(()-> System.out.println("123")).start();

输出:

上面两个线程的功能是一致的,也就是使用Lambda表达式简写了创建线程的过程。

()-> System.out.println("123") 
等价于 
@Override
   public void run() {
       System.out.println("123");
   }
}

  1. 有参数
long c = Arrays.stream(arr).filter(a -> {
    return a.equals("c");
}).count();
System.out.println(c);


long c1 = Arrays.stream(arr).filter(new Predicate() {
    @Override
    public boolean test(String s) {
        return s.equals("c");
    }
}).count();
System.out.println(c1);

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434178.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号