首页 > 其他分享 >常用的函数式接口_Predicate接口练习_集合信息筛选与常用的函数式接口_Function接口

常用的函数式接口_Predicate接口练习_集合信息筛选与常用的函数式接口_Function接口

时间:2022-10-11 13:47:17浏览次数:61  
标签:Function 常用 函数 ArrayList Predicate 接口 字符串 String

练习:集合信息筛选

  题目:数组当中有多条“姓名+性别”的信息如下,请通过Predicate 接口的拼装将符合要求的字符串筛选到集合ArrayList 中,

  需要同时满足两个条件:

    1.必须为女生;

    2. 姓名为4个字。

  题目分析: 

    1. 有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
    2. 必须同时满足两个条件,所以可以使用and方法连接两个判断条件

解答:  

 1 package day01.Demo01_Day016;
 2 
 3 import java.util.ArrayList;
 4 import java.util.function.Predicate;
 5 
 6 /*
 7     练习:集合信息筛选
 8     数组当中有多条“姓名+性别”的信息如下,
 9     String[] array = { "迪丽热巴,女", "古力娜扎,女", "马尔扎哈,男", "赵丽颖,女" };
10     请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中,
11     需要同时满足两个条件:
12         1. 必须为女生;
13         2. 姓名为4个字。
14     分析:
15         1.有两个判断条件,所以需要使用两个Predicate接口,对条件进行判断
16         2.必须同时满足两个条件,所以可以使用and方法连接两个判断条件
17  */
18 public class Demo05Test {
19     /*
20         定义一个方法
21         方法的参数传递一个包含人员信息的数组
22         传递两个Predicate接口,用于对数组中的信息进行过滤
23         把满足条件的信息存到ArrayList集合中并返回
24      */
25     public static ArrayList<String> filter(String[] arr,Predicate<String> pre1,Predicate<String> pre2){
26         //定义一个ArrayList集合,存储过滤之后的信息
27         ArrayList<String> list = new ArrayList<>();
28         //遍历数组,获取数组中的每一条信息
29         for (String s : arr) {
30             //使用Predicate接口中的方法test对获取到的字符串进行判断
31             boolean b = pre1.and(pre2).test(s);
32             //对得到的布尔值进行判断
33             if(b){
34                 //条件成立,两个条件都满足,把信息存储到ArrayList集合中
35                 list.add(s);
36             }
37         }
38         //把集合返回
39         return list;
40     }
41 
42     public static void main(String[] args) {
43         //定义一个储存字符串的数组
44         String[] array = { "神宫千夏,女", "莫德凯撒,男", "马尔扎哈,男", "赵丽颖,女" };
45         //调用filter方法,传递字符串数组和两个Lambda表达式
46         ArrayList<String> list = filter(array,(String s)->{
47             //获取字符串中的性别,判断是否为女
48             return s.split(",")[1].equals("男");
49         },(String s)->{
50             //获取字符串中的姓名,判断长度是否为4个字符
51             return s.split(",")[0].length()==4;
52         });
53         //遍历集合
54         for (String s : list) {
55             System.out.println(s);
56         }
57     }
58 }

 

 

常用的函数式接口_Function接口

java.util.function.Function<T,R>接口用来根据一个类型数据得到另一个数据类型的数据

前者称为前置条件,后者称为后置条件

抽象方法:apply

  Function接口中的主要抽象方法为:R apply(T t)根据类型T的参数获取类型R的结果

    使用场景:如String类型转换Integer类型

 1 package day01.Demo01_Day016;
 2 
 3 import java.util.function.Function;
 4 
 5 /*
 6         java.util.function.Function<T,R>接口用来根据一个类型数据得到另一个数据类型的数据
 7             前者称为前置条件,后者称为后置条件
 8              Function接口中的主要抽象方法为:R apply(T t)根据类型T的参数获取类型R的结果
 9             使用场景:如String类型转换Integer类型
10      */
11 public class Demo01Function {
12     /*
13     定义一个方法
14      方法的参数传递一个字符串类型的整数
15      方法的参数传递一个Function接口,泛型使用<String,Integer>
16      使用Function接口中的方法apply,把字符串类型的整数,转换为Integer类型的数据
17      */
18         public static void change(String s, Function<String,Integer> fun){
19             int in =fun.apply(s);  //自动拆箱 Integer----->int;
20             System.out.println(in);
21         }
22 
23     public static void main(String[] args) {
24         //定义一个字符串类型的整数
25         String s  ="123";
26         //调用change方法,传递字符串类型的整数,和Lambda表达式
27         change(s,(String str)->{
28             //把字符串类型的整数,转换为Integer类型的数据
29             return Integer.parseInt(str);
30         });
31         //优化Lambda
32         change(s,str->Integer.parseInt(str));
33     }
34 }

 

标签:Function,常用,函数,ArrayList,Predicate,接口,字符串,String
From: https://www.cnblogs.com/x3449/p/16778765.html

相关文章

  • 环网光端机:环网光端机的几类物理接口类型
    环网光端机,便是光信号传送的智能终端。环网光端机如今能传送的业务流程许多,如:视频,声频,数据信息,开关量,电话,以太网接口等。那么,你对环网光端机的几类物理学插口掌握吗,是不是......
  • GCC中常用的优化的参数
    -pipe的作用:使用管道代替编译中临时文件,-pipe加速编译gcc-pipefoo.c-ofoo加速在将源代码变成可执行文件的过程中,需要经过许多中间步骤,包含预处理、编译、汇编和......
  • C语言之函数
    结构化程序设计主张按功能来分析需求,主要原则自顶向下,逐步求精,模块化等。主张按功能把软件系统逐步细分,每个功能都负责对数据进行一次处理,每个功能接收一些数据,处理完后......
  • kubernetes(k8s)常用deploy模板 并验证
    kubernetes常用deploy模板,并验证编写deploy配置文件root@hello:~#catdeploy.yamlapiVersion:apps/v1kind:Deploymentmetadata:name:hostname-test-cbylabels......
  • Vim常用命令
     多窗口模式:split创建新窗口ctrl+w切换Ctrl-w=所有窗口一样高Ctrl-w+方向键多个视窗间切换2、标记ma在光标所在处做一个名为a的标记。最多可以在文本中做26个标记......
  • key_t IPC键和ftok函数详解和剖析
    统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_tftok(char*fname,intid)fname就时你指定的文件名(......
  • Python函数-5
    Python函数-4的补充和修订:修正一下上个博客的代码块中的del应改为def,深感歉意。补充一下返回值函数的样式:def函数名:return代码(值)一.函数的作用域有两种,一个......
  • 【C语言_21】处理字符串的函数!
    前言使用以下函数均需要添加头文件#include<string.h>1.strlen函数获取字符串的长度从第一个字符开始直到遇见\0,返回字符串的长度size_tstrlen(constchar*str);//size_t......
  • ACWing Java基础语法记录-类与接口
    类可以将变量、函数完美地打包在一起。类与对象类定义一种全新的数据类型,包含一组变量和函数;对象是类这种类型对应的实例。解释:例如在一间教室中,可以将'Student'定义成......
  • DQL_排序查询_DQL聚合函数
    1.排序查询 *语法:orderby子句 *orderby排序字段1排序方式1,排序字段2排序方式2... *排序方式: *ASC:升序,默认的 *DESC:降......