function、stream、optional

function、stream、optional,第1张

function、stream、optional function

java.util.function 定义了大量的函数接口
常用接口

函数式接口参数类型返回类型用途Consumer
消费型接口Tvoid对类型T对象应用 *** 作,包含方法
void accept(T t)Supplier
供给型接口无T返回类型为T的对象,包含方法
T get()Function
函数型接口TR对类型为T的对象应用 *** 作,并返回结果。结果是R类型的对象。包含方法:R apply(T t)Predicate
断定型接口Tboolean确定类型为T的对象是否满足某约束,并返回boolean值。包含方法;boolean test(T t) Stream

java.util.stream

简单上手

limit 截取
skip 跳过
distinct 去重复

        int[] ints = {1, 2, 3, 3, 3, 3, 6, 8, 9, 0, 4};
        //创建一个有、int流
        IntStream stream = Arrays.stream(ints);
        //静态方法创建流
        Stream integerStream = Stream.of(1, 2, 3, 4, 4);
        //filter 过滤  数组中大于5的
        stream.filter( i -> i>5)
                
                .limit(3) //结果截取前 3个
                .skip(2)//结果天国前 2个
                .distinct()// 去除重复结果
                
                .forEach( System.out :: println);


      //无限流
      Stream.iterate(0,t -> t+2)
                .limit(10)
                .forEach( System.out::println );
map

map 获取一个参数, 参数转换为其他形式互获取元素信息
flatmap 把流中的值 转换成另一个流 再把所有流合并

  ArrayList arr = new ArrayList();
        arr.add("aa");arr.add("bb");arr.add("cc");
        Stream arrStream = arr.stream();
        
        arrStream.map( str -> str.toUpperCase())//输出大写  
                .forEach(System.out :: println);


排序 Sotred()产生一个流,自然排序Sotred(Comparator com)产生一个流,按照比较器排序
Stream stream = Arrays.asList(11, 21, 41, 31, 22, 12).stream();
stream.sorted().forEach( System.out::print  );//11 12 21 22 31 41
Stream stream = Arrays.asList(11, 21, 41, 31, 22, 12).stream();
 stream.sorted( (o1,o2) -> o1.compareTo(o2) ).forEach( System.out :: println );
终止 *** 作

方法描述allMatch(Predicate p)检查是否匹配所有元素anyMatch(Predlcate p)检查是否至少匹配一个元素noneMatch(Predicate p)检查时否没有匹配所有元素findFirst()返回第一个元素findAny()返回当前流中任意元素count()返回流中元素个数max(Comparator c)返回流中最大值min(Comparator c)返回流中最小值forEach(Consumer c)内部迭代 s

数据

 ArrayList arr = new ArrayList<>();
        arr.add(new user("张三",20));
        arr.add(new user("奥斯丁",21));
        arr.add(new user("温顿",22));
allMath() 返回值:boolean
 //判断是否是所有员元素满足条件  boolean返回值
 boolean b = stream.allMatch(user -> user.getAge() > 21);
anyMath() 返回值:boolean
 //有一个匹配即可
 boolean b1 = stream.anyMatch(user -> user.getAge() > 21);
noneMatch 返回值:boolean
 //是否没有 包含 张三
 boolean s = stream.noneMatch(user -> user.getName().equals("张三"));
findAn 获取任意元素
 //获取任意元素   可以有中间 *** 作
 stream.sorted().findAny();
findFirst 获取第一个元素
 //获取第一个元素   可以有中间 *** 作
 tream.sorted().findFirst();
conut 流中元素个数
 //count     元素个数
 ong count = stream.distinct().count();
max 返回流中最大值
//map 映射出年纪, 在取最大值
stream.map( user::getAge ).max(  Integer::compareTo );
min 最小值
stream.map(user::getAge).min(Integer::compareTo);
forEach 内部迭代
stream.forEach(System.out:: println);
收集 collect (终止 *** 作)
//单那个元素的结果收集
stream().collect(Collectors.toSet());
stream().collect(Collectors.toList());

归约 方法描述reduce(T iden,BinaryOperator b)可以将流中元素返回给姐哈起来,得到一个值,返回Treduce(BinaryOperator b)可以将流中元素返回结合起来,得到一个值,返回Optional reduce
//归约 求和 
Arrays.asList(1,2,3,4,5,6,7).stream().reduce(0,Integer::sum);
Optional

java.util.Optional

创建 Optional 对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R9Po4cmU-1643430913719)(/Users/luofeng/Library/Application Support/typora-user-images/image-20220129122816735.png)]

of -> 创建一个 必须非空的

empty. -> 创建一个空的

ofNullable -> 可以为空的

非空判断

boolena isPresent(). ->判断是否包含对象void ifPresent(Consumer consumer) ->如果有值,就执行conusmer

获取 Optional 容器内对象

T get() ->返回对象内 值,(user、map、list…)T orElseGet(Supplier other ) ->如果有值则将其返回,否则由supplier接口实现题共对象T orElse throw(Supplier exceptionSupplier) ->如果有值则返回,否则返回由 supplier 接口提供的异常 以前

多层if 取非空判断

    //非空判断
    public String notNull(user u){
        if( u != null ){
            if( u.getName() != null)
                return u.getName();
        }
        return "0";
    }
optional
   public static String optional(user u) {
        //创建对象 内容可以为nukl
        Optional u1 = Optional.ofNullable(u);
        //u1 为空的时候,创建 对象 加入u2
         user u2 = u1.orElse(new user("无效对象", 0));
        return u2.getName();
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5719592.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存