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

淘宝网站开发方式深圳平面设计公司排名榜

淘宝网站开发方式,深圳平面设计公司排名榜,网站开发培训费,东莞建域名网站Lambda表达式#xff1a; Lambda 表达式背后的思想是函数式编程#xff08;Functional Programming#xff09;思想。在传统的面向对象编程中#xff0c;程序主要由对象和对象之间的交互#xff08;方法调用#xff09;构成#xff1b;而在函数式编程中#xff0c;重点…Lambda表达式 Lambda 表达式背后的思想是函数式编程Functional Programming思想。在传统的面向对象编程中程序主要由对象和对象之间的交互方法调用构成而在函数式编程中重点在于函数的应用和组合。 以上就是Lambda表示的背后思想做为了解即可 主要要看怎么用 Lambda表达式的格式 ()-{} () : 重写方法的参数位置         - : 将参数传递到方法体中         {} : 重写方法的方法体  直接看代码 public class Test03 {public static void main(String[] args) {ArrayListInteger list new ArrayList();list.add(1);list.add(2);list.add(8);list.add(0);list.add(4);Collections.sort(list, new ComparatorInteger() {Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;}});System.out.println(list);Collections.sort(list,((o1, o2) - o1-o2));System.out.println(list);} } 上面是用Comparator比较器来定义排序规则 下面则是用Lambda表达式 我们对照起来看就能发现o1o2就是方法的参数  - 后面就是方法体。 Lambda表达式使用前提 在使用Lambda表达式之前我们需要确认必须是函数式接口做为参数传递 什么是函数式接口 有且只有一个抽象方法的接口,用FunctionalInterface去检测 我们可以点击这个Comparator这个方法 还有我们在线程章节经常用的Runnable接口 new Thread(()-System.out.println(Thread.currentThread().getName())).start(); 这时候可能有人会想Lambda表达式既然只能用函数式接口做为参数那这个不是很鸡肋嘛 难道我要自己去写一个接口里面专门再只放一个抽象方法那这不是更麻烦了嘛 反正我刚刚学的时候我确实是有这样的疑问 后面问了GPT其实这个lambda表达式大部分应该是和后面的Stream流一起使用的 Stream流 Stream流中的流不是特指IO流,它是一种流式编程(编程方式),可以看做是流水线 个人对流的理解 在我学习了流的大致用法之后我其实觉得这个流就是一个操作数组和列表的工具类 里面提供了一系列的方法来操作数组和列表 下面介绍一下Stream流的方法 Stream流的获取 这个Stream流的获取就是把数组或者列表转化成流 public class Demo02Stream {public static void main(String[] args) {//1.针对集合:Collection中的方法//StreamE stream()ArrayListString list new ArrayList();list.add(张三);list.add(李四);list.add(王五);StreamString stream list.stream();System.out.println(stream);//2.针对数组:Stream接口中的静态方法://static T StreamT of(T... values)StreamString stream1 Stream.of(金莲, 三上, 松下);System.out.println(stream1);} } 常用方法 filter(Predicate)过滤方法根据指定的条件对元素进行筛选。 map(Function)映射方法将元素按照指定的映射规则进行转换。 forEach(Consumer)遍历方法对流中的每个元素执行指定的操作。 collect(Collectors)收集方法将流中的元素收集到一个集合中。 distinct()去除流中的重复元素。 limit(long)截取流中的前几个元素。 skip(long)跳过流中的前几个元素。 count()统计流中元素的个数。 直接上一段代码 public class Test01 {public static void main(String[] args) {ArrayListString list new ArrayList();list.add(张无忌);list.add(张三丰);list.add(张大彪);list.add(吕不韦);list.add(张三);list.add(赵姬);list.add(张翠山);list.add(嫪毐);//1筛选出姓张的人System.out.println(筛选出姓张的人);list.stream().filter(s - s.startsWith(张)).forEach(s - System.out.print(s ));//2筛选出姓张且名字为两个字的人System.out.println();System.out.println(筛选出姓张且名字为两个字的人);list.stream().filter(s - s.startsWith(张)).filter(s - s.length()2).forEach(s - System.out.print(s ));//3计算列表的个数System.out.println();System.out.println(计算列表的个数);long count list.stream().count();System.out.println(count);//4:返回流的前n个对象System.out.println();System.out.println(返回流的前2个对象);StreamString limit list.stream().limit(2);limit.forEach(s - System.out.print(s ));//5跳过Stream流对象中的前n个元素,返回一个新的Stream流对象System.out.println();System.out.println(跳过Stream流对象中的前n个元素,返回一个新的Stream流对象);list.stream().skip(2).forEach(s- System.out.print(s ));//6两个流合成一个流System.out.println();System.out.println(两个流合成一个流);ArrayListString newlist new ArrayList(Collections.nCopies(list.size(), ));Collections.copy(newlist,list);System.out.println(newlist);Stream.concat(newlist.stream(),list.stream()).forEach(s - System.out.print(s ));//7转换流中的类型System.out.println();System.out.println(转换流中的类型);StreamInteger stream Stream.of(1, 2, 3, 4, 5, 6);stream.map(Integer - Integer).forEach(s - System.out.print(s ));} }下面来一个项目中的稍微复杂一点的代码加深印象 在学这个JDK新特性这一章的时候刚好在写伙伴匹配系统 下面这段鱼皮老师写的代码我那个时候一直看不懂 现在算是能看懂了 这里的userList就是在数据库中查出来的所有用户列表 这里的tagNameList就是前端传过来的标签列表 所以这一段的逻辑就是根据前端传过来的标签列表进行查找有相同标签的用户 return userList.stream().filter(user - {String tagsStr user.getTags();SetString tempTagNameSet gson.fromJson(tagsStr, new TypeTokenSetString() {}.getType());tempTagNameSet Optional.ofNullable(tempTagNameSet).orElse(new HashSet());for (String tagName : tagNameList) {if (!tempTagNameSet.contains(tagName)) {return false;}}return true;}).map(this::getSaftyUser).collect(Collectors.toList()); 我们来分析一下整体的代码逻辑 将userList转成流对象转成流对象之后再从对应的用户中取出标签因为我这里将标签定义成了一个String类型所以后面就将这个String转成了JSON格式的数据存到这个Set集合中用了Optional来对这个转换后的集合做了一个判空处理如果为空就new一个空集合然后遍历前端传过来的标签列表如果判断标签列表中有和用户的标签列表不同的元素直接返回false这样就被流给过滤掉了接着再对符合要求的用户做一个映射map(this::getSaftyUser)这个就相当于map(this::getSaftyUser)将当前对象this的 getSaftyUser 方法应用到 Stream 中的每个元素上当我们执行完这个filter方法之后里面的用户就是我们需要的用户了我们需要对用户进行一个脱敏将一些重要信息隐藏起来。然后再将我们粉装好的流对象转成列表返回即可 如果上面的逻辑有点难举个例子因为我自己一开始也想了很久 比如有三个用户ABC 他们的标签分别是 A : Java 男大一 B : Python 男大二 C : C 女大三 然后这个时候我们传入的tagNameList是男大一 执行流程就是我们会先将上面的三个用户取出来成一个列表就是userList 然后将这个列表转换成流对象接着将这个列表中的每一个对象都执行后面Lambda表达式中的操作有点像遍历一遍这个列表比如将A用户的标签取出来 Java 男大一封装成一个SetString集合再遍历tagNameList这个列表男大一挨个判断男是否在这个集合中在就继续判断大一这个标签是否在这个集合中在就结束循环返回true就把这个A用户装到流中。
http://www.w-s-a.com/news/828945/

相关文章:

  • 品牌网站建设收费情况登陆页面模板
  • 十大免费cms建站系统介绍科技网站欣赏
  • 自学做网站需要多久semir是什么品牌
  • 南通网站搜索引擎优化网站首页seo关键词布局
  • 东莞市国外网站建设多少钱wordpress 多媒体插件
  • c2c商城网站建设公司做水果生意去哪个网站
  • 做网站服务器有哪些电子商务网站建立
  • 网站开发的具体流程原材料价格查询网站
  • 深圳响应式网站建设深圳网站建设定制开发 超凡科技
  • 网站建设报价怎么差别那么大wordpress产品属性搭配
  • 高校网站建设情况报告范文pc建站网站
  • 做网站美工要学什么广东省建设厅网站首页
  • 深圳网站设计十年乐云seo网站建设 竞赛 方案
  • 新乡移动网站建设wordpress输出某一分类的文章
  • 花店网站开发设计的项目结构重庆网站建设培训班
  • 做网站的技术体系投资者互动平台官网
  • 北京网站建设公司哪家实惠企查查在线查询入口
  • 毕业设计做网站怎么样非微信官方网页自己做的网站
  • 昆明网站多端小程序设计重庆市住房和城乡建设厅网站
  • 网站制作技术人员国际新闻最新10条
  • 做同城特价的网站wordpress后台能修改模板文件
  • 网站信息可以边建设边组织产品展示网站源码php
  • 电子商务网站规划从哪些方面入手途牛企业网站建设方案
  • 莱阳网站定制易语言可以做网站嘛
  • 购物网站开发意义上海中小企业服务中心官网
  • 网站备案证书如何打开江苏网站建设电话
  • 深圳网站建设乐云seo搜索引擎优化seo目的
  • 中山城市建设集团网站网站建设设计基础
  • 网站开发流程莆田wordpress点播收费
  • 网站未及时续费浙江台州做网站的公司有哪些