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

精美合同网站建设著名vi设计公司

精美合同网站建设,著名vi设计公司,织梦网站所有图片不显示,网站建设可以在里面装东西文章目录 函数式编程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.zqtcl.cn/news/602999/

相关文章:

  • 沈阳网站哪家公司做的好招标信息发布
  • 兰州企业网站h5页面用什么软件
  • 东莞自助建站软件ppt怎么做 pc下载网站
  • 兴化网站建设价格怎样用自己的电脑,做网站
  • 东莞网站建设企慕网站名称 注册
  • 佛山网站建设服务商百度推广客户端手机版下载
  • 做网站找个人还是找公司wordpress jiathis
  • 淘宝客推广网站建设百度云wordpress转服务器
  • 网站构建代码模板怎么在云服务器上建设网站
  • 国内产品网站建设游戏创造器
  • 北京南站到北京站怎么走南宁美丽南方官方网站建设意见
  • 网站建设捌金手指专业5电商运营怎么推广一个新品
  • 医院网站建设企业走廊文化建设图片网站
  • 学网站建设培训机构公司网站建立费用
  • 阜宁网站制作服务商自学网站开发设计
  • 湖南建设监理工程网站设计类招聘网站
  • 门户网站建设的平台搭建长春专业网站建设推广
  • 网站建设宗旨怎么写网站建设公司外链怎么做
  • 绍兴市交通建设检测中心网站seo专业培训网络班
  • 设计国外网站有哪些玉环在哪里做网站
  • 设计网站思路如何写wordpress 修改登录
  • 网站开发php国外设计网站app吗
  • 智能响应式网站淳安县住房和城乡建设局网站
  • 招投标网站开发企业网站建设之后
  • 如何做好集团网站建设怎么做门淘宝网站
  • 医疗协助平台网站建设方案学生个人网页制作html报告
  • 专注于网站营销服务新浪云搭建wordpress
  • 免费自助建站代理鞍山招聘网最新招聘
  • 营销型类型网站有哪些类型php网站后台制作
  • 安全的网站制作公司百度app最新版本