IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> JAVA8新特性 -> 正文阅读

[Java知识库]JAVA8新特性

①:函数式接口(支持Lamda):(有且只有一个抽象方法的接口)
列举几个常用的

    public static void main(String[] args) {

        // 一个参数,一个返回值
        Function<String, String> dd = i -> {
            String ii = "My Name is";
            return ii + i;
        };
        // 一个参数,无返回值
        Consumer<String> ee = i -> System.out.println(i);

        // 一个参数,返回布尔类型
        Predicate<String> ff = i -> i.length() > 10;

        // 没有参数,一个返回值
        Supplier<String> gg = () -> "yes";

        System.out.println(dd.apply("wenwenYU"));

        ee.accept("CAI CAI WO SHI SHUI");

        System.out.println(ff.test("1234567891234"));

        System.out.println(gg.get());
    }

个人理解:函数式接口更像是把代码逻辑块作为方法的参数。

②:Stream流

?一个Stream流操作:可以有N个中间操作,但只能有且只有一个终止操作。

假设一个场景:

一个List<Person>
Person有两个属性String name,String code
现在要变成map<String,String> key为code,value为name

    public static void main(String[] args) {
        List<Person> personList =new ArrayList<>();
        personList.add(new Person("于问问","988"));
        personList.add(new Person("苗问问","988"));
        personList.add(new Person("李问问","777"));
        Map<String, String> personMap = personList.stream()
                     .collect(
                          Collectors.toMap(Person::getCode, Person::getName)
                              );
    }

这样会不会有问题?答案是会有问题的。
Map的key值不能重复,现在于问问和苗问问的code号都是988

遇到这种情况转Map时就必须得有取舍了,苗问问和于问问只能留一个,那就留苗问问吧

        Map<String, String> personMap = personList.stream()
            .collect(Collectors.toMap(Person::getCode, Person::getName, (v1, v2) -> v2));

(v1,v2)->v2的意思也就是前者和后者传进来,只留后者

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-03-24 00:21:20  更:2022-03-24 00:25:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:44:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码