[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...
什么是函数式编程?
给定一个数集A,假设其中的元素为x。
现对A中的元素x施加对应法则f,记作f(x),得到另一数集B。假设B中的元素为y。
则y与x之间的等量关系可以用y=f(x)表示。
我们把这个关系式就叫函数关系式,简称函数。
函数概念含有三个要素:定义域A、值域C和对应法则f。
其中核心是对应法则f,它是函数关系的本质特征。
|
通过对应法则f(x) 对指定的x 进行处理,映射成另外一个值
而且不会对x本身产生变动
|
函数式编程不是某一种语言,也不是某个API
他是一种方法论,是一种编程范式,有它自有的一些特性和规定
语言中引入函数式编程,也就是用语言本身定义了函数式编程的一些特性和规定
|
函数式编程有下列特性
为什么要使用函数式编程?
假设有这么一组Student学生类型的List数据,学生有性别男女 |
List<Student> 男List ; for(int i=0;i<studentList.length;i++){//studentList 为学生列表,其中有男有女 if(studentList[i].性别 == 男){男List.add(List[i]) }
假设有个Student 学生表,每条记录都有一个性别字段值为男女 |
select * from student where sex='男';
new Thread(new Runnable() { @Override public void run() { System.out.println(); } }).start();
函数式编程的准则是没有副作用不依赖外部的数据,也不改变外部数据的值。
Java8 对于函数式编程的支持
- 函数接口(FunctionalInterface)
- 流(Stream)
- 收集器(Collector)
public @interface FunctionalInterface {}
函数接口是一个接口,有且只有一个唯一的抽象方法 |
R function(T){....return R}
public static void main(String[] args){ Function<String,Boolean> function = (String x)->x.equals("true"); System.out.println(function.apply("1")); System.out.println(function.apply("true")); }
Lambda表达式((String x)->x.equals("true"))
方法引用(String::length)
public static void main(String[] args){ Function<String,Integer> function = String::length; System.out.println(function.apply("1")); System.out.println(function.apply("true")); }
流
集合是一种数据结构用于存储数据
Stream不是一种数据结构,是对于数据的一种新的视图,用于数据的计算,提供了一系列的API用于调用
|
收集器
<R, A> R collect(Collector<? super T, A, R> collector);
public interface Collector<T, A, R> {
public final class Collectors
转载于:https://www.cnblogs.com/noteless/p/9501195.html
[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...相关推荐
- java中函数是什么_[一] java8 函数式编程入门 什么是函数式编程 函数接口概念 流和收集器基本概念...
本文是针对于java8引入函数式编程概念以及stream流相关的一些简单介绍 什么是函数式编程? java程序员第一反应可能会理解成类的成员方法一类的东西 此处并不是这个含义,更接近是数学上的函数 看 ...
- python编程入门-Python编程入门经典pdf(Python编程入门教程) 高清中文版
Python编程入门经典pdf(Python编程入门教程)下载.Python编程入门经典pdf高清版帮助各位更好的进行Python编程的学习以及理解,最经典的课题,最深入的概念,让你在Python编程 ...
- python游戏编程入门源代码_python游戏编程入门源代码
[实例简介] <Python游戏编程入门>的源代码,作者Jonathan S.Harbour 很好的资源,希望对学习python的同学有帮助,代码都可以运行 [实例截图] [核心代码] p ...
- python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课
python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...
- python编程入门经典教程-python编程入门经典
第七章主要是文件操作相关,这么看用python---便,是一个不错的工具. <Python编程入门经典>主要内容:介绍用于存储和操作数据的变量的概念:讨论用于读写数据的文件和输入/输出:总 ...
- python编程入门视频推荐_Python编程入门2021攻略,书籍推荐,视频推荐,每天更新...
写这篇文章的初衷 2018年我大学毕业,和很多人一样.大学里的世界,我也是整天LOL.打了4年,确还只是个黄金守门员.恋爱也想都不敢想.不过,话说回来,我拿了三年的奖学金.真的不是因为我学习认真,而是 ...
- pythonguitkinter编程入门_Python Tkinter GUI编程入门介绍
一.Tkinter介绍 Tkinter是一个python模块,是一个调用Tcl/Tk的接口,它是一个跨平台的脚本图形界面接口.Tkinter不是唯一的python图形编程接口,但是是其中比较流行的一个 ...
- 电脑编程入门自学java_电脑编程入门自学Java指南
随着Java近些年来的强劲发展,想要转行学习Java的初学者也越来越多了.然而,入门自学Java并不是一件轻松的事情.众所周知,万事开头难,尤其是没有编程语言基础的学习者,不仅仅需要付出更多的心血和汗 ...
- python游戏编程入门免费_python游戏编程入门 python游戏编程入门课
python游戏编程入门 python游戏编程入门课 什么是python游戏编程入门?首先我们需要认识什么是Python Python既是一个软件工具包,也是一种语言.Python软件包包含了一个名为 ...
最新文章
- 源码资本张宏江:只有算法和技术,那你一定挣不到钱
- 一些挺不错的visualstudio主题样式
- Python中文分词 jieba 十五分钟入门与进阶
- html背景图片自适应纵向,HTML5 body设置全屏背景图片 如何让body的背景图片自适应整个屏----实战经验...
- jzoj3847-都市环游【矩阵乘法】
- GitHub上已超过2900星!这份有原理、有代码、有Demo的算法资源火了
- java数据结构图_java总结数据结构和算法
- 不同库表数据库迁移工具_Microsoft提供的数据库迁移助手工具概述
- 程序员专属段子集锦 1/10
- PhpStorm快捷方式
- 新浪财经三人行:专家谈萨班斯法案聊天实录
- 第十届山东省ACM程序设计竞赛(部分题解)
- linux ntfs 3g 格式化,linux使用ntfs-3g操作ntfs格式硬盘
- 【转载】详解Android中接口回调、方法回调
- 与卿共赴鸿蒙是什么意思,《山河令》看来周子舒是真的很爱温客行,君心似我心,此生无憾...
- 新课程盘古人工智能框架开发专题发布,智华欢迎读者学习!
- HTML小黄人吃球球GO域名跳转源码
- 编写程序,实现一个基于面向思想的、具有开户、查询、取款、存款、转账、锁定、解锁和退出功能的银行管理系统。
- 【玩玩硬件】esp8266驱动墨水屏
- 一部值得成年人反复观看的剧
热门文章
- 修改机器名、IP对arcgis server、portal的影响?
- ORA-39002 ORA-39070 ORA-29283 ORA-06512 ORA-29283
- php math函数
- Windows Server 2008 R2 SP1遗忘管理员密码后的解决方案
- [转载]中国工商银行软件开发部门职业发展
- 2009下半年网络管理员试题及答案
- 企业管理软件的需求描述方法
- 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?...
- linux死锁检测的一种思路【转】
- 自定义View实现图片的绘制、旋转、缩放