[Java基础]函数式接口

在这里插入图片描述

代码如下:

package MyInterfacePack01;@FunctionalInterface
public interface MyInterface {void show();
}
package MyInterfacePack01;public class MyInterfaceDemo {public static void main(String[] args){MyInterface my= ()->System.out.println("hello world");my.show();}}

在这里插入图片描述

代码如下:

package MyInterfacePack01;public class RunnableDemo {public static void main(String[] args){startThread(new Runnable() {@Overridepublic void run() {System.out.println(Thread.currentThread().getName()+"线程启动了");}});startThread(()->System.out.println(Thread.currentThread().getName()+"线程启动了"));}private static void startThread(Runnable r){new Thread(r).start();}}

在这里插入图片描述

代码如下:

package MyInterfacePack01;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;public class ComparatorDemo {public static void main(String[] args){ArrayList<String> array = new ArrayList<String>();array.add("hello");array.add("javaaaaa");array.add("world");System.out.println("排序前"+array);Collections.sort(array,getComparator());System.out.println("排序后"+array);}private static Comparator<String> getComparator(){
//        Comparator<String> comp = new Comparator<String>() {
//            @Override
//            public int compare(String s1, String s2) {
//                return s1.length()-s2.length();
//            }
//        };
//        return comp;return (s1,s2)->s1.length()-s2.length();}
}

在这里插入图片描述
在这里插入图片描述

代码如下:

package SupplierPack;import java.util.function.Supplier;public class SupplierDemo {public static void main(String[] args){String s = getString(()->{return "Tom";});String s1 = getString(()->"TOM");System.out.println(s);System.out.println(s1);Integer i = getInteger(()->30);System.out.println(i);}private static String getString(Supplier<String> sup){return sup.get();}private static Integer getInteger(Supplier<Integer> sup){return sup.get();}}

在这里插入图片描述

代码如下:

package SupplierPack;import java.util.function.Supplier;public class SupplierTest {public static void main(String[] args){int [] arr = {19,50,28,37,64};int maxValue =  getMax(()->{int max = arr[0];for (int i = 1;i<arr.length;i++){if (arr[i] > max){max = arr[i];}}return max;});System.out.println(maxValue);}private static int getMax(Supplier<Integer> sup){return sup.get();}}

在这里插入图片描述

代码如下:

package SupplierPack;import java.util.function.Consumer;public class ConsumerDemo {public static void main(String[] args){
//        operatorString("Tom",(String s)->{
//            System.out.println(s);
//        });operatorString("Tom",s->System.out.println(s));operatorString("Tom",System.out::println);operatorString("Tom",s->System.out.println(new StringBuilder(s).reverse().toString()));System.out.println("------------------------------------------");operatorString("Jack",s->System.out.println(s),s->System.out.println(new StringBuilder(s).reverse().toString()));}private static void operatorString(String name,Consumer<String> con1,Consumer<String> con2){
//        con1.accept(name);
//        con2.accept(name);con1.andThen(con2).accept(name);}private static void operatorString(String name, Consumer<String> con){con.accept(name);}}

在这里插入图片描述

代码如下:

package SupplierPack;import java.util.function.Consumer;public class ConsumerTest {public static void main(String[] args){String[] strArray = {"Tom,20","Jack,23","Bom,18"};printInfo(strArray,(String str)->{String name = str.split(",")[0];System.out.print("姓名"+name);},(String str)->{int age = Integer.parseInt(str.split(",")[1]);System.out.println(",年龄"+age);});}public static void printInfo(String[] strArray, Consumer<String> con1,Consumer<String> con2){for (String str:strArray){con1.andThen(con2).accept(str);}}}

在这里插入图片描述

代码如下:

package SupplierPack;import java.util.function.Predicate;public class PredicateDemo01 {public static void main(String[] args){boolean b1 = checkString("hello",(String s)->{return s.length() > 8;});boolean b2 = checkString("hello",s->s.length() > 8);boolean b3 = checkString("helloworld",s->s.length() > 8);System.out.println(b1);System.out.println(b2);System.out.println(b3);}private static boolean checkString(String s, Predicate<String> pre){
//        return pre.test(s);return pre.negate().test(s);}}
package PredicatePack01;import java.io.StringReader;
import java.util.function.Predicate;public class PredicateDemo01 {public static void main(String[] args){boolean b1 = checkString("hello",s->s.length() > 8);System.out.println(b1);boolean b2 = checkString("helloworld",s->s.length()> 8);System.out.println(b2);boolean b3 = checkString("hello",s->s.length() > 8 ,s->s.length()<15);System.out.println(b3);boolean b4 = checkString("helloworld",s->s.length() > 8 , s->s.length() < 15);System.out.println(b4);}private static boolean checkString(String s, Predicate<String> pre1,Predicate<String> pre2){
//        boolean b1 = pre1.test(s);
//        boolean b2 = pre2.test(s);
//        boolean b = b1 && b2;
//        return b;
//        return pre1.and(pre2).test(s);return pre1.or(pre2).test(s);}private static boolean checkString(String s, Predicate<String> pre){return pre.test(s);}}

在这里插入图片描述

代码如下:

package PredicatePack01;import java.util.ArrayList;
import java.util.function.Predicate;public class PredicatePack {public static void main(String[] args){String[] strArray = {"Tom,30","Jack,34","Bom,49","Lily,34","Mike,33"};ArrayList<String> array = myFilter(strArray,s->s.split(",")[0].length()>2,s->Integer.parseInt(s.split(",")[1]) > 33);for (String str:array){System.out.println(str);}}private static ArrayList<String> myFilter(String[] strArray, Predicate<String> pre1,Predicate<String> pre2){ArrayList<String> array = new ArrayList<String>();for (String str:strArray){if(pre1.and(pre2).test(str))array.add(str);}return array;}
}

在这里插入图片描述

代码如下:

package PredicatePack01;import java.util.function.Function;public class FunctionDemo {public static void main(String[] args){
//        convert("100",(String s)->{
//            return Integer.parseInt(s);
//        });convert("100",s->Integer.parseInt(s));convert("100",Integer::parseInt);convert(100,i->String.valueOf(i+566));convert("100",s->Integer.parseInt(s),i->String.valueOf(i+566));}private static void convert(String s,Function<String,Integer> fun1,Function<Integer,String > fun2){
//        Integer i = fun1.apply(s);
//        String ss  = fun2.apply(i);
//        System.out.println(ss);String ss = fun1.andThen(fun2).apply(s);System.out.println(ss);}private static void convert(int i,Function<Integer,String> fun){String s = fun.apply(i);System.out.println(s);}private static void convert(String s, Function<String,Integer> fun){Integer i  = fun.apply(s);System.out.println(i);}}

在这里插入图片描述

代码如下:

package PredicatePack01;import java.util.function.Function;public class FunctionTest {public static void main(String[] args){String s = "Tom,35";convert(s,(String ss)->{return ss.split(",")[1];},(String ss)->{return Integer.parseInt(ss);},(Integer i)->{return i+70;});convert(s,ss->ss.split(",")[1],ss->Integer.parseInt(ss),i->i+70);convert(s,ss->ss.split(",")[1],Integer::parseInt,i->i+70);}private static void convert(String s, Function<String,String> fun1,Function<String,Integer> fun2,Function<Integer,Integer> fun3){Integer i = fun1.andThen(fun2).andThen(fun3).apply(s);System.out.println(i);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/310172.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零搭建分布式文件系统MinIO比FastDFS要更合适

前两天跟大家分享了一篇关于如何利用FastDFS组件来自建分布式文件系统的文章&#xff0c;有兴趣的朋友可以阅读下《用asp.net core结合fastdfs打造分布式文件存储系统》。通过留言发现大家虽然感兴趣&#xff0c;但是都觉得部署比较麻烦。的确&#xff0c;fastdfs的部署很繁琐&…

[Java基础]方法引用

代码如下: package PrintablePack;public interface Printable {void printString(String s);}package PrintablePack;public class PrintableDemo {public static void main(String[] args){usePrintable(s-> System.out.println(s));usePrintable(System.out::println);/…

甲方爸爸,大概你要的是代码生成器吧?

作者&#xff1a;邹溪源&#xff0c;长沙资深互联网从业者&#xff0c;架构师社区特邀嘉宾&#xff01;一1&#xff09;有一天&#xff0c;我的朋友Y童鞋分享了他正在做的一个内部开源项目&#xff0c;这个开源项目从外表上看&#xff0c;跟目前市场上那些代码生成器本没有特别…

使用pdf.js来预览pdf文件_适用于Dynamics365与PowerApps的注释预览组件

powerapps/dynamics365适用的注释预览/批量下载组件自定义组件为预览功能原生预览支持的文件类型:图像,zip,音频,pdf支持批量打包注释为zip下载到本地使用浏览器预览支持:音频,视频,图像,pdf,文本,xml,json等,理论上只需要浏览器支持打开的文件类型,均可预览使用方法:1.导入解决…

消息队列,我只选RabbitMQ!

高并发架构是架构师的必修课&#xff0c;而消息队列&#xff0c;则是王冠上最闪亮的那颗明珠&#xff01;能否驾驭消息队列这款高并发神器&#xff0c;亦成为架构师的试金石。作为专注.NET领域十多年的老架构师&#xff0c;下面从队列本质、技术选型、实战应用三个方面&#xf…

python比较三个数_python经典练习题(三)

人生苦短&#xff0c;你需要python继续学习python第一题题目&#xff1a;输入三个整数 x,y,z&#xff0c;请把这三个数由小到大输出不借助sortnum1 int(input("请输入第一个数"))num2 int(input("请输入第二个数"))num3 int(input("请输入第三个数&qu…

使用Jexus 容器化您的 Blazor 应用程序

在本文中&#xff0c;我们将介绍如何将 Blazor 应用程序放入Jexus 容器以进行开发和部署。我们将使用 .NET Core CLI&#xff0c;因此无论平台如何&#xff0c;使用的命令都将是相同的。Blazor 托管模型Blazor 有两个托管模型&#xff0c;它们的要求不同&#xff0c;本文主要基…

【A】 Natasha3.0 引擎亮给你,请你来折腾

文章转载授权级别&#xff1a;A一 、 引言Natasha 距离上个 2. 版本大概有1个月了&#xff0c;在4月份里我把模板与引擎进行了重构&#xff0c;旨在更抽象、规范、合理&#xff0c;方便其他人参与开源、定制。接下来我将从 引擎的结构 、类库的使用及新热的 Source Generators …

linux ps mysql_linux系统中ps指令使用详解

在linux系统作为和unix和ubuntu相同的系统&#xff0c;ps指令经常被用到查看程序进程的状态&#xff0c;但是这个指令具体怎么用您会吗&#xff1f;本文就以centos为例&#xff0c;结合项目中服务器的实际应用&#xff0c;给大家讲解下ps指令的用法。一、参数a——显示现行终端…

ASP.NET Core在CentOS上的最小化部署实践

引言本文从Linux小白的视角&#xff0c; 在CentOS服务器上搭建一个Nginx-Powered AspNet Core Web准生产应用。在开始之前&#xff0c;我们还是重温一下部署原理&#xff0c;正如你所常见的.Net Core 部署图&#xff1a;在Linux上部署.Net Core App最好的方式是使用Kestrel 服务…

面试官:你不懂六大设计原则,回去等通知吧!

一、前言不知道大家是否有这样的体会&#xff0c;就是在学习设计模式的时候&#xff0c;看了很多书籍&#xff0c;也照着很多示例把每个模式挨个敲了几遍&#xff0c;但过了一段时间后&#xff0c;就会忘了一大半。或者有的朋友尝试在业务编码中使用&#xff0c;却越用越复杂&a…

Asp.Net Core Filter 深入浅出的那些事-AOP

一、前言在分享ASP.NET Core Filter 使用之前&#xff0c;先来谈谈AOP,什么是AOP 呢&#xff1f;AOP全称Aspect Oriented Programming意为面向切面编程&#xff0c;也叫做面向方法编程&#xff0c;是通过预编译方式和运行期动态代理的方式实现不修改源代码的情况下给程序动态统…

C++函数模板和普通函数的调用规则

C函数模板和普通函数的调用规则: 普通函数可以进行自动类型转换。 函数模板必须严格类型匹配。 C编译器优先考虑普通函数。 如果函数模板可以产生一个更好的匹配&#xff0c;那么选择模板。 可以通过空模板实参列表的语法限定编译器只能通过模板匹配。 代码如下&#xff…

.NET Core技术研究-通过Roslyn代码分析技术规范提升代码质量

随着团队越来越多&#xff0c;越来越大&#xff0c;需求更迭越来越快&#xff0c;每天提交的代码变更由原先的2位数&#xff0c;暴涨到3位数&#xff0c;每天几百次代码Check In&#xff0c;补丁提交&#xff0c;大量的代码审查消耗了大量的资源投入。如何确保提交代码的质量和…

python最大堆heapq_Python-堆的实现与heapq(最小堆库函数)

目录简介堆是一个二叉树&#xff0c;它的每个父节点的值都只会小于或大于所有孩子节点(的值)。它使用了数组来实现&#xff1a;从零开始计数&#xff0c;对于所有的 k &#xff0c;都有 heap[k] < heap[2*k1] 和 heap[k] < heap[2*k2]。 为了便于比较&#xff0c;不存在的…

深入浅出 ASP.NET Core 与 Docker 入门课程说明

点击蓝字“角落的白板报”关注我哟加个“星标★”&#xff0c;好文必达&#xff01;深入浅出 ASP.NET Core 与 Docker 入门课程说明《深入浅出 ASP.NET Core 与 Docker 》是一门新的课程&#xff0c;本课程所有的内容全部免费&#xff0c;以图文配合视频的形式呈现。课程完整视…

微软将在新西兰建设其第一个数据中心区域

昨天新西兰各IT群都被一条消息刷屏了&#xff1a;详情可见&#xff1a;https://news.microsoft.com/en-nz/2020/05/06/aotearoa-disclosure/NZ的第一个Azure region region 是云计算的一个术语&#xff0c;也就是各大云运营商机房部署的位置。目前微软、亚马逊、谷歌等比较大的…

使用 kind 快速搭建一个 Kubernetes 测试环境

使用 kind 快速搭建一个 Kubernetes 测试环境Introkind&#xff08;Kubernetes IN Docker&#xff09; 是一个基于 docker 构建 Kubernetes 集群的工具&#xff0c;非常适合用来在本地搭建基于 Kubernetes 的开发/测试环境。想写一篇 kind 的文章很久了&#xff0c;但是之前的 …

麻雀虽小,五脏俱全

入职三年&#xff0c; 除了参与公司核心产品研发外&#xff0c;另外负责了一个2C的小项目&#xff1a;调用API拿到解析结果 & 计费。❝项目最初是.NetCore 1.0-Previewsqlite部署在IIS上&#xff0c;闲来没事&#xff0c;这个项目已经被我完全重写&#xff0c;在此记录一些…

内存迟迟下不去,可能你就差一个GC.Collect

一&#xff1a;背景1. 讲故事我们有一家top级的淘品牌店铺&#xff0c;为了后续的加速计算&#xff0c;在程序启动的时候灌入她家的核心数据到内存中&#xff0c;灌入完成后内存高达100G&#xff0c;虽然云上的机器内存有256G&#xff0c;然被这么划掉一半看着还是有一点心疼的…