JAVA-Lambda,stream,maven 笔记

JAVA-Lambda

lambda 本质是‘语法糖’。

匿名函数 为了简化JAVA中的匿名内部类

事件监听 写一个类 实现 ActionListener接口。

内部类: 类在其他地方都用不到,索性将这个类定义在类的内部使用。

好处:1.内部可以使用外部类成员

2.其他地方发现不了

往往内部类只用一次,还需要创建一个内部类,麻烦。

JAVA为了简化语法,new 接口/抽象类,创建了一个匿名的类的对象。

lambda是匿名函数,把函数当做参数一样传递。

底层编译器将语法转化为常规代码。

lambda是一个“语法糖”,就是名词,某种语法可以简化开发称为语法糖。

装箱 拆箱

自动类型转换

泛型

使用lambda接口中必须只能有一个抽象方法。

JAVA8—stream

处理数据集合(数组,集合类)。

对数组,集合类 进行各种操作(过滤,排序...)

Stream是JAVA8新特性,可以把它视为遍历数据集的高级迭代器。

stream处理数据的大体过程:

1.获取 数据/集合类 —>2.转化为stream流对象

—> 3.对流进行各种操作(排序,过滤)

—> 4.将流转化为数据/集合类 的 结果(集合类/数组)

数据集合类更偏向于存储数据(各种结构)

Io流:输入输出文件内容

Stream流: 更偏向于数据操作

流中有个forEach()方法。

中间操作的方法:

filter():过滤某些元素

sorted():自然排序,流中元素需实现Comparable接口

distinct:去除重复元素

limit(n): 获取n个元素

skip(n):跳过n个元素,配合limit(n)可实现分页。

map():将对象中某个属性的值映射到一个新的元素中

Integer [] array =new Integer[]{1,2,3,4,2,8,5,4,6,8,9,7};
        Arrays.stream(array)
                //寻找小于5的元素
                //传入参数e,返回符合{}中的条件的e
                .filter(
                        (e)->{ return e<5;}
                )
                .forEach(e->{
            System.out.println(e);
        });
        System.out.println("****************************************************");
        Arrays.stream(array)
                //传入两个参数,自然排序为(o1-o2),逆序排序为(o2-o1)
                .sorted(
                        (o1,o2) -> { return o1-o2;}
                )
                .distinct()//去重复元素
                //for循环输出
                .forEach(e->{
            System.out.println(e);
        });
        System.out.println("****************************************************");
        Arrays.stream(array)
                .sorted()
                .distinct()
                .skip(2)//跳过(n)个元素
                .limit(2)//获取(n)个元素
                .forEach(e->{
                    System.out.println(e);
                });

// map()
System.out.println("***************************************************");
        Object[] a= array.stream()
                //获取数据对象中的id元素,映射到一个新的元素中
                    .map(Student::getId)
                    .toArray();
        System.out.println(Arrays.toString(a));
System.out.println("***************************************************");
 Map<Integer,String>map= array.stream()
                .collect(Collectors.toMap(Student::getId,Student::getName));
        System.out.println(map);
最终操作:

forEach: 遍历流中的元素

toArray:将流中的元素倒入一个数组

Min:返回流中元素最小值

Max:返回流中元素最大值

count:返回流中元素的总个数

Reduce:所有元素求和

anyMatch:接收一个 Predicate 函数,只要流中有一个元素满足条件则返 回 true,否则返回 false

allMatch:接收一个 Predicate 函数,当流中每个元素都符合条件时才返 回 true,否则返回 false

findFirst:返回流中第一个元素

collect:将流中的元素倒入一个集合,Collection 或 Map

Predicate 函数:()->{return ;}

Integer [] array =new Integer[]{7,1,2,3,4,5,6,2};
       Integer integer= Arrays.stream(array)
                .distinct()//排序
               //返回数据中最大的元素
                .max((o1,o2)->{
                    return o1-o2;
                }).get();
        System.out.println(integer);
        //当返回的数据类型与原来数据/集合类的元素数据相同的话,需要用get()方法获取元素后,在返回数据;
System.out.println("*********************************************************");
        long i =Arrays.stream(array)
                .count();//返回一个数据中元素数量的总和
        System.out.println(i);
System.out.println("*********************************************************");
         Integer integer1=Arrays.stream(array)
                .distinct()
                 //求数据中所有元素的和
                .reduce((o1,o2)->{
                    return o1+o2;
                }).get();
        System.out.println(integer1);
System.out.println("*********************************************************");
        boolean flag= Arrays.stream(array)
                .distinct()
         //判断数据中的元素是否有一个元素符合Predicate 函数的条件,如果符合返回true,反之返回false。
                .anyMatch((e)->{
                    return e>=5;
                });
        System.out.println(flag);
        //当返回的数据类型与原来数据/集合类的元素数据不同的话,直接返回;
System.out.println("*********************************************************");
        Integer i3=Arrays.stream(array)
                //查询数据中第一个出现的元素
                .findFirst().get();
        System.out.println(i3);
//collect()
  Student s1=new Student(101,"张三1",16);
        Student s2=new Student(102,"张三2",15);
        Student s3=new Student(103,"张三3",18);
        Student s4=new Student(104,"张三4",19);
        Student s5=new Student(105,"张三5",25);
        ArrayList<Student> array=new ArrayList<>();
        array.add(s1);
        array.add(s2);
        array.add(s3);
        array.add(s4);
        array.add(s5);
        /*
        因为sorted()无法找到排序的条件,无法排序,会报错
        Student s= array.stream()
                .sorted()
                .findFirst().get();
        System.out.println(s);
         */
        List<Student> list = array.stream()
                .sorted((stu1,stu2)->{
                    return stu1.getId()-stu2.getId();
                })
                .collect(Collectors.toList());
        System.out.println(list);
        System.out.println("***************************************************");
        Object[] a= array.stream()
                    .map(Student::getId)
                    .toArray();
        System.out.println(Arrays.toString(a));
        System.out.println("***************************************************");
        List list1= array.stream()
                .map(Student::getId)
                .collect(Collectors.toList());
        System.out.println(list1);
        System.out.println("***************************************************");
       Map<Integer,String>map= array.stream()
                .collect(Collectors.toMap(Student::getId,Student::getName));
        System.out.println(map);

Maven

Maven是apache软件基金会的一个开源项目。

apache软件基金会(国外一个,专门维护开源项目的组织)

Maven是一个优秀的项目构建(项目管理)工具。

具体表现为:

1.管理项目中依赖的jar文件,以及jar文件之间的依赖关系(在A.jar文件中,使用到了B.jar)。

2.可以完成项目的测试,编译(将.java文件-->.class文件),打包(源代码->.jar文件)等工作。

Maven如何管理项目中依赖的jar文件?

Maven将常用的jar收集起来,在他的服务器上存储。

每个jar都有一个独一无二的地址。

我们在开发期间,只需要将jar包的地址配置在项目配置文件中即可。

借助maven就可以自动去官网下载jar文件到本地。

maven管理的项目根目录下,都有一个pom.xml文件

在pom.xml文件中指示maven如何工作(配置项目版本,编译选项,jar的坐标)

坐标:

jar包在maven仓库中的唯一地址

中央仓库(全球共享唯一的)

中央仓库镜像(阿里云镜像)多个

本地仓库

在项目中使用jar的时候,首先会从本地仓库中寻找,就会从中央仓库镜像/中央仓库中下载。

Maven开发环境搭建:
前提条件:

安装 jdk

网络连接正常

安装:

解压安装包到指定位置

将bin目录的地址复制后,在系统环境变量path创建相应的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值