ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

自定义涵数模型拼接-对集合中的数据进行过滤

2022-07-22 09:38:32  阅读:140  来源: 互联网

标签:Function 遍历 String 自定义 int 涵数 字符串 拼接 集合


自定义涵数模型拼接

 

请使用Function进行函数模型的拼接,按照顺序需要执行的多个函数操作为︰
String str ="赵丽颖,20";
1.将字符串截取数字年龄部分,得到字符串﹔

2.将上一步的字符串转换成为int类型的数字﹔

3.将上一步的int数字累加100,得到结果int数字。

package A_Lian_two.D02;

import java.util.function.Function;

/*
请使用Function进行函数模型的拼接,按照顺序需要执行的多个函数操作为︰
String str ="赵丽颖,20";
1.将字符串截取数字年龄部分,得到字符串﹔
2.将上一步的字符串转换成为int类型的数字﹔
3.将上一步的int数字累加100,得到结果int数字。

 */
public class Demo03Test {
    public static void main(String[] args) {
        String str="赵丽颖,20";
        int num  = change(str, (String s) -> {
            return s.split(",")[1];
        }, (String s) -> {
            return Integer.parseInt(s);
        }, (Integer i) -> {
            return i + 100;
        });

        System.out.println(num);
    }

    private static int change(String s, Function<String,String> fun1,
                               Function<String,Integer> fun2,Function<Integer,Integer> fun3) {
        return fun1.andThen(fun2).andThen(fun3).apply(s);
    }

}

 

对集合中的数据进行过滤

 

说到Stream便容易想到I/O Stream,而实际上,谁规定"流"就一定是""0流"呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。

传统集合的多步遍历代码

几乎所有的集合(如collection 接口或Map接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如︰

 

 

这是一段非常简单的集合遍历操作∶对集合中的每一个字符串都进行打印输出操作。

循环遍历的弊端

Java 8的Lambda让我们可以更加专注于做什么( What ),而不是怎么做(How ),这点此前已经结合内部类进行了对比说明。现在,我们仔细体会一下上例代码,可以发现︰
. for循环的语法就是“怎么做”
. for循环的循环体才是“做什么”

为什么使用循环﹖因为要进行遍历。但循环是遍历的唯一方式吗?遍历是指每一个元素逐一进行处理,而并不是从第一个到最后一个顺次处理的循环。前者是目的,后者是方式。
试想一下,如果希望对集合中的元素进行筛选过滤︰

1.将集合A根据条件一过滤为子集B;

2.然后再根据条件二过滤为子集C。那怎么办?在Java8之前的做法可能为︰

标签:Function,遍历,String,自定义,int,涵数,字符串,拼接,集合
来源: https://www.cnblogs.com/leijia/p/16504537.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有