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

浙江建设职业技术学院官方网站wordpress质感主题

浙江建设职业技术学院官方网站,wordpress质感主题,兰州设计公司排名榜,wordpress静态主页文章目录 函数式编程Lambda表达式Stream流创建流中间操作终结操作注意事项 Optional创建对象消费值获取值过滤判断数据转换 方法引用高级用法基本数据类型优化并行流 函数式编程 不关心具体的对象#xff0c;只关心数据参数和 具体操作 Lambda表达式 格式#xff1a; () -只关心数据参数和 具体操作 Lambda表达式 格式 () - {} 假如接口只有一个 函数需要被重写则可以使用 Lambda表达式来 代替 类的创建和重写 省略规则 参数类型可以省略方法体只有一句代码时大括号return和唯一一句代码的分号可以省略方法只有一个参数时小括号可以省略 Stream流 对集合进行操作 创建流 集合对象. stream() 单列集合 数组 使用 Arrays 数组工具类 来创建 使用 stream.of创建 Integer[] arr {1,2,3,4,5}; StreamInteger stream Arrays.stream(arr); StreamInteger stream2 Stream.of(arr);双列集合 先转换为 SetMap.EntryString, String再获取 Stream MapString ,String map new HashMap(); SetMap.EntryString, String entries map.entrySet(); StreamMap.EntryString, String stream entries.stream();中间操作 distinct 去重 依靠 Objec.equals方法 不重写是 地址相同 filter(条件) 条件过滤 list.stream().distinct() //过滤重复元素.filter(s - s.length() 3).forEach(s - System.out.println(s));map 转化集合中每个元素的类型 ListString list new ArrayList(); list.add(111); list.add(111); list.add(2222); // forEach //过滤条件 list.stream().map(s - Integer.valueOf(s)).forEach(integer - System.out.println(integer));sorted 排序 先将流中类型 转换为 Comparable 如果是空参自定义类型需要实现Comparable接口 ListString list new ArrayList(); list.add(111); list.add(333); list.add(2222); // forEach //过滤条件 list.stream().sorted().forEach(integer - System.out.println(integer));还可以传入参数 list.stream().map(s - Integer.valueOf(s)).sorted(new ComparatorInteger() {Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;}}).forEach(integer - System.out.println(integer));limit: 设置流的最大长度 list.stream().limit(2).forEach(System.out::println);skip: 跳过前n个元素 list.stream().skip(2).forEach(System.out::println);flatMap 将流中一个元素 转换成 流元素 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); // forEach //过滤条件 list.stream().flatMap(strings - strings.stream()).forEach(System.out::println);输出 未简化 //过滤条件 list.stream().flatMap(new FunctionListString, Stream?() {Overridepublic Stream? apply(ListString strings) {return strings.stream();}}).forEach(System.out::println);终结操作 forEach 对流中元素进行遍历操作 count: 获取流中元素的 个数 long count list.stream().flatMap(strings - strings.stream()).count(); System.out.println(count);min max 求流中最值 重写比较方法 OptionalInteger count list.stream().flatMap(strings - strings.stream()).map(s - Integer.valueOf(s)).max(new ComparatorInteger() {Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}}); System.out.println(count);简化 OptionalInteger count list.stream().flatMap(strings - strings.stream()).map(s - Integer.valueOf(s)).max((o1, o2) - o1 - o2); System.out.println(count);collect: 转换为list,使用 集合类中的 tolist方法 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); ListString collect list.stream().flatMap(strings - strings.stream()).collect(Collectors.toList()); System.out.println(collect);转换为set一样 SetString collect list.stream().flatMap(strings - strings.stream()).collect(Collectors.toSet()); System.out.println(collect);转换为 Map集合 MapString, String collect list.stream().flatMap(strings - strings.stream()).distinct().collect(Collectors.toMap(s - s, s - s)); System.out.println(collect);查找 anyMatch 任意一个满足就为 true boolean b list.stream().flatMap(strings - strings.stream()).anyMatch(s - s.length() 10);allMatch 所有满足才为true noneMatch 都不满足才为 true 匹配 findAny 获取任意一个满足条件的 元素 findFirst 获取第一个元素 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); OptionalString first list.stream().flatMap(strings - strings.stream()).sorted().findFirst(); first.ifPresent(System.out::println);reduce归并 对流中数据按照指定的计算方式计算出一个结果 原理 两个参数的重载形式内部的计算方式如下 一个参数 把第一个参数 作为 初始化值 使用 0 初始值 (result, integer2) - result integer2 执行的操作 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); Integer reduce list.stream().flatMap(strings - strings.stream()).map(s - Integer.valueOf(s)).reduce(0, (result, integer2) - result integer2);注意事项 惰性求值 没有终结操作中间操作不会执行 流是一次性的 一个流只能执行一次 终结操作 不会影响原数据 Optional 预防空指针异常 创建对象 使用Optional.ofNullable String s new String(1); OptionalString s1 Optional.ofNullable(s); s1.ifPresent(s2 - System.out.println(s2));消费值 s1.ifPresent(s2 - System.out.println(s2));获取值 orElseGet 为空则使用重写的 返回值 String s null; OptionalString s1 Optional.ofNullable(s); System.out.println(s1.orElseGet(() - 222));orElseThrow 为空则抛出异常 过滤 filter 假如不满足过滤条件则返回 Optional.empty String s null; OptionalString s1 Optional.ofNullable(s); OptionalString s2 s1.filter(s3 - s3.length() 2); System.out.println(s2); //打印 Optional.empty判断 isPresent 判断是否存在 数据转换 使用map 进行 Optional类型的转换 String s 1; OptionalString s1 Optional.ofNullable(s); OptionalInteger i s1.map(s2 - Integer.valueOf(s2)); i.ifPresent(System.out::println); //1方法引用 在使用 Lambda 表达式的时候如果方法体中只有一个方法 的调用话就可以使用 类名或者对象名方法名 来简化 高级用法 基本数据类型优化 我们之前用到的很多Stream的方法由于都使用了泛型。 所以涉及到的参数和返回值都是引用数据类型。 即使我们操作的是整数小数但是实际用的都是他们的包装类。 JDK5中引入的自动装箱和自动拆箱让我们在使用对应的包装类时就好像使用基本数据类型一样方便。 但是你一定要知道装箱和拆箱肯定是要消耗时间的。 虽然这个时间消耗很下。但是在大量的数据不断的重复装箱拆箱的时候你就不能无视这个时间损耗了。 所以为了让我们能够对这部分的时间消耗进行优化。 Stream还提供了很多专门针对基本数据类型的方法。 例如: mapToInt,mapToLong,mapToDouble,flatMapTolnt,flatMapToDouble等。 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); list.stream().flatMap(strings - strings.stream()).mapToInt(s - Integer.valueOf(s)).forEach(System.out::println);并行流 当流中有大量元素时我们可以使用并行流去提高操作的效率。其实并行流就是把任务分配给多个线程去完全。 如果我们自己去用代码实现的话其实会非常的复杂并且要求你对并发编程有足够的理解和认识。 而如果我们使用Stream的话我们只需要修改一个方法的调用就可以使用并行流来帮我们实现从而提高效率。 使用parallel() peek中间操作 ListListString list new ArrayList(); list.add(Arrays.asList(111,2222)); list.add(Arrays.asList(1121,2222)); list.add(Arrays.asList(113,2222)); OptionalInt first list.stream().parallel().flatMap(strings - strings.stream()).mapToInt(s - Integer.valueOf(s)).peek(i - System.out.println(i : Thread.currentThread().getName())).findFirst();打印
http://www.pierceye.com/news/83358/

相关文章:

  • 丽水网站建设微信推广wordpress改变上传目录
  • 包装东莞网站建设0769网络推广引流
  • 经营一个网站要怎么做wordpress 上传绕过
  • 吉安网站建设吉安公司网站怎么做才能有官网二字
  • 网站内容不显示百度竞价网站备案
  • 电子商务网站管理网站建设功能报价单
  • 百度小程序可以根据网站的要求做吗惠州网站建设培训
  • 一个叫mit做app的网站企业网站源码挣钱吗
  • 做网站只买一个程序wordpress自动提取描述关键词
  • aws网站建设水产养殖畜禽饲料类网站前端模板
  • 荆门做网站企业免费做网站
  • 达州住房和城乡建设部网站3d家装效果图制作软件
  • 超值的镇江网站建设东莞百度seo找谁
  • wordpress文章内链佛山抖音seo
  • 昆明网站搭建网站运营融资网站建设方案
  • 网站开发培训少儿天津做网站哪家服务好
  • 单位做网站需要准备什么网页设计素材怎么放进去
  • aardio 网站开发wordpress建站原理
  • 网页设计代码文字浮动宁波seo入门教程
  • 怎么在网上做装修网站优化公司治理
  • 网站怎么防黑客wordpress 不能评论
  • 免费ppt课件下载网站静态网站开发项目实验报告
  • 海口建设局网站个人建站除了wordpress
  • 中山市做网站公司同一个空间可以做两个网站么
  • 中国三大门户网站是哪三个html网页设计小作业的代码部分
  • 在线做流程图的网站做网站有兼职的吗
  • 塔城市建设局网站做空eth网站
  • 上海网站设计找哪家昆明网站词排名优化
  • 网站做商标在那类网络美工是干啥的
  • 沌口网站建设网站推广如何做的