当前位置: 首页 > news >正文

北京网页设计学校成都sem优化

北京网页设计学校,成都sem优化,个人网站排行,国内顶尖网站设计公司lambda 表达式的应用场景 Stream 的应用场景 Lambda/Stream 的进一步封装 自定义函数式接口(用 jdk 自带的函数式接口也可以) https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html import java.io.Serializable;/*** 可序…
  • lambda 表达式的应用场景

  • Stream 的应用场景

  • Lambda/Stream 的进一步封装

自定义函数式接口(用 jdk 自带的函数式接口也可以)

https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html

import java.io.Serializable;/*** 可序列化的Functional** @author VampireAchao*/
@FunctionalInterface
public interface Func<T, R> extends Serializable {/*** 调用** @param t 参数* @return 返回值*/R apply(T t);
}/*** 可序列化的函数式接口实现类** @author VampireAchao*/
public class FuncImpl implements Func<Object, String> {/*** 调用** @param o 参数* @return 返回值*/@Overridepublic String apply(Object o) {return o.toString();}
}Func<String, Integer> func = new Func<String, Integer>() {/*** 调用** @param s 参数* @return 返回值*/@Overridepublic Integer apply(String s) {return s.hashCode();}};

Lambda 这种简写的形式

java.util.stream (Java Platform SE 8 )

 Func<String, String> func1 = (String s) -> {return s.toUpperCase();};Func<String, String> func2 = (String s) -> s.toUpperCase();
Func<String, String> func3 = s -> s.toUpperCase();
Func<String, String> func4 = String::toUpperCase;import java.util.function.Function;
import java.util.function.IntFunction;
import java.util.function.Supplier;/*** 语法糖——方法引用** @author VampireAchao*/
public class MethodReferences {public static Object staticSupplier() {return "whatever";}public Object instanceSupplier() {return "whatever";}public Object anonymousInstanceFunction() {return "whatever";}public static void main(String[] args) {// 引用构造函数Supplier<MethodReferences> conSup = () -> new MethodReferences();conSup = MethodReferences::new;// 数组构造函数引用IntFunction<int[]> intFunction = value -> new int[value];// intFunc == new int[20];int[] intFuncResult = intFunction.apply(20);// 引用静态方法Supplier<Object> statSup = () -> staticSupplier();statSup = MethodReferences::staticSupplier;Object statSupResult = statSup.get();// 引用特定对象的实例方法Supplier<Object> instSup = new MethodReferences()::instanceSupplier;instSup = new MethodReferences()::instanceSupplier;Object instSupResult = instSup.get();// 引用特定类型的任意对象的实例方法Function<MethodReferences, Object> anonInstFunc = streamDemo -> streamDemo.anonymousInstanceFunction();anonInstFunc = MethodReferences::anonymousInstanceFunction;}}

jdk 自带的函数式接口写法

import java.math.BigDecimal;
import java.util.function.*;/*** 常用的几个函数式接口写法** @author VampireAchao*/
class Usual {public static Consumer<Object> consumer() {// 有参数无返回值return o -> {};}public static Function<Integer, Object> function() {// 有参数有返回值return o -> o;}public static Predicate<Object> predicate() {// 有参数,返回值为booleanreturn o -> true;}public static Supplier<Object> supplier() {// 无参数有返回值return Object::new;}public static BiConsumer<String, Integer> biConsumer() {// 俩参数无返回值return (q, o) -> {};}public static BiFunction<Integer, Long, BigDecimal> biFunction() {// 俩参数,有返回值return (q, o) -> new BigDecimal(q).add(BigDecimal.valueOf(o));}public static UnaryOperator<Object> unaryOperator() {// 一个参数,返回值类型和参数一样return q -> q;}public static BinaryOperator<Object> binaryOperator() {// 俩参数和返回值类型保持一致return (a, o) -> a;}}

Java 8 API 的抽象称为流 Stream

java.util.stream (Java Platform SE 8 )

    // 声明式编程是告诉计算机需要计算“什么”而不是“如何”去计算// 现在,我想要一个List,包含3个数字6List<Integer> sixSixSix =// 我想要:Stream// 数字6.generate(() -> 6)// 3个.limit(3)// 最后收集起来转为List.collect(Collectors.toList());sixSixSix.forEach(System.out::print);//Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。// 就像sql里的排序、截取// 我要把传入的list逆序,然后从第五个(元素下标为4)开始取值,取4条abc = abc.stream()// 排序(按照自然顺序的逆序).sorted(Comparator.reverseOrder())// 从下标为4开始取值.skip(4)// 取4条.limit(4)// 最后收集起来转为List.collect(Collectors.toList());System.out.println("我要把传入的list逆序,然后从第五个(元素下标为4)开始取值,取4条");abc.forEach(System.out::print);System.out.println();/*** 老办法实现一个list,存储3个6** @return [6, 6, 6]*/private static List<Integer> oldSix() {// 老办法List<Integer> sixSixSix = new ArrayList<>(3);sixSixSix.add(6);sixSixSix.add(6);sixSixSix.add(6);System.out.println("老办法实现一个list,存储3个6");for (Integer integer : sixSixSix) {System.out.print(integer);}System.out.println();return sixSixSix;}/*** 新方法实现一个list,存储3个6** @return [6, 6, 6]*/private static List<Integer> newSix() {List<Integer> sixSixSix = Stream.generate(() -> 6).limit(3).collect(Collectors.toList());System.out.println("新方法实现一个list,存储3个6");sixSixSix.forEach(System.out::print);System.out.println();return sixSixSix;}// 管道中传输,节点中处理int pipe = abc.stream()// 筛选.filter(i -> i > 'G')// 排序.sorted(Comparator.reverseOrder()).mapToInt(Object::hashCode)// 聚合.sum();System.out.println("将26个字母组成的集合过滤出大于'G'的,逆序,再获取hashCode值,进行求和");System.out.println(pipe);//元素流在管道中经过中间操作(intermediate operation)的处理,最后由最终操作 (terminal operation) 得到前面处理的结果。// 将26个大写字母Character集合转换为String然后转换为小写字符List<String> terminalOperation = abc.stream()// 中间操作(intermediate operation).map(String::valueOf).map(String::toLowerCase)// 最终操作(terminal operation).collect(Collectors.toList());System.out.println("26个大写字母Character集合,转换成String然后转换为小写字符,收集起来");terminalOperation.forEach(System.out::print);System.out.println();

http://www.lryc.cn/news/617023.html

相关文章:

  • 网站建设方案书 个人做百度推广一个月多少钱
  • 一级a做爰片试看 免费网站百度竞价ocpc
  • php做公司网站seo网站推广怎么做
  • 常州微网站建设游戏搬砖工作室加盟平台
  • 中建建设银行网站北京今日重大新闻
  • wordpress做下载站百度推广代运营公司
  • 网站空间数据库专门看广告的网站
  • 电商网站话费充值怎么做北京推广优化经理
  • 竞价网站服务器台州网站建设优化
  • 常见网站页面布局类型seo流程
  • 开源企业网站管理系统网络广告营销案例有哪些
  • 遇到灾难网站变灰怎么做3000行业关键词
  • wordpress 教程类主题宁波seo外包引流推广
  • 网站开发有啥作用百度关键字优化价格
  • 来个黑黑的网站腾讯广告
  • 找人做网站被骗能立案吗山东大学经济研究院
  • 做ppt比较好的网站seo项目完整流程
  • 南京企业网西安seo优化
  • 怎么建设手机电影网站seo是什么seo怎么做
  • 建立一个自己的网页seo技术培训教程
  • 2015个人网站如何去工信部备案seo优质友链购买
  • 潍坊做网站建设的公司衡阳seo优化推荐
  • 济南做网站价格足球排行榜前十名
  • 哪家公司做网站合肥网站建设
  • 品牌建设服务合同淘宝关键词优化技巧
  • 博彩网站做代理违法吗企业邮箱哪个好
  • 合肥专业网站制作北京营销网站制作
  • 可以做外链的音乐网站肇庆seo排名外包
  • 支付宝手机网站如何设计一个网页
  • 哪个网站可以做效果图赚钱网站推广内容