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

做网站平台的营业执照给别人做网站被诉侵权

做网站平台的营业执照,给别人做网站被诉侵权,付费wordpress主题,自己做的网站如何百度能搜索转载自 跟我学 Java 8 新特性之 Stream 流#xff08;五#xff09;映射 经过了前面四篇文章的学习#xff0c;相信大家对Stream流已经是相当的熟悉了#xff0c;同时也掌握了一些高级功能了#xff0c;如果你之前有阅读过集合框架的基石 Collection 接口#xff0c;是…转载自   跟我学 Java 8 新特性之 Stream 流五映射 经过了前面四篇文章的学习相信大家对Stream流已经是相当的熟悉了同时也掌握了一些高级功能了如果你之前有阅读过集合框架的基石 Collection 接口是不是在经过前面的学习以前看不懂的东西突然之间就恍然大悟了呢 今天我们的主角是Stream流里面的映射。由于之前映射并没有再我们的Demo例子中出现过所以对大家来说可能会稍微有一点点陌生的但通过这一篇文章我相信能解决你的疑问。 在正式开始之前我和大家继续说说流API操作不知道大家有没有注意到其实我们所有的流API操作都是针对流中的元素进行的并且都是基于同一流里面的大家有没有这样的疑问怎么样把一个流的元素弄到另一个流里面呢怎么把流中的一些满足条件的元素放到一个新流里面呢 通过这一节你将会掌握解决刚才问题的本领。另外再提一点如果流操作只有中间操作没有终端操作那么这些中间操作是不会执行的换句话说只有终端操作才能触发中间操作的运行。 我们为什么需要映射 因为在很多时候将一个流的元素映射到另一个流对我们是非常有帮助的。比如有一个包含有名字手机号码和钱的数据库构成的流可能你只想要映射钱这个字段到另一个流这时候可能之前学到的知识就还不能解决于是映射就站了出来了。 另外如果你希望对流中的元素应用一些转换然后把转换的元素映射到一个新流里面这时候也可以用映射。 我们先来看看流API库给我们提供了什么样的支持 public interface StreamT extends BaseStreamT, StreamT {R StreamR map(Function? super T, ? extends R mapper);//line2IntStream mapToInt(ToIntFunction? super T mapper);//line3LongStream mapToLong(ToLongFunction? super T mapper);//line4DoubleStream mapToDouble(ToDoubleFunction? super T mapper);//line5R StreamR flatMap(Function? super T, ? extends Stream? extends R mapper);//line6IntStream flatMapToInt(Function? super T, ? extends IntStream mapper);//line7LongStream flatMapToLong(Function? super T, ? extends LongStream mapper);//line8DoubleStream flatMapToDouble(Function? super T, ? extends DoubleStream mapper);//line9} 我和大家分析一个最具有一般性的映射方法map()相信大家就能举一反三了map()定义如下 Streammap(Function mapper); 其中R指定新流的元素类型T指定调用流的元素类型mapper是完成映射的Function实例被称为映射函数映射函数必须是无状态和不干预的大家对这二个约束条件应该很熟悉了吧。因为map()方法会返回一个新流因此它是一个中间操作。 Function是 java.util.function包中声明的一个函数式接口声明如下 FunctionalInterfacepublic interface FunctionT, R {R apply(T t);} 在map()的使有过程中T是调用流的元素类型R是映射的结果类型。其中,apply(T t)中的t是对被映射对象的引用被返回映射结果。下面我们将上一篇中的例子进行变形用映射来完成他: 假设List里面有三个Integer类型的元素分别为123。现在的需求是分别让List里面的每个元素都放大两倍后再求积。这个需求的正确答案应该是48; private static void learnMap() {ListInteger lists new ArrayList();lists.add(1);lists.add(2);lists.add(3);//使用并行流来处理Integer product lists.parallelStream().reduce(1, (a, b) - a *  (b * 2),(a, b) - a * b);System.out.println(product: product);//48//使用映射来处理//Integer productMap lists.parallelStream().map((a) - a * 2).reduce(1, (a, b) - a * b);StreamInteger productNewMapStream lists.parallelStream().map((a) - a * 2);Integer productMap productNewMapStream.reduce(1, (a, b) - a * b);System.out.println(productMap: productMap);//48} 与使用并行流不同在使用映射处理的时候元素扩大2倍发生时机不一样了使用并行流元素扩大是在缩减的过程当中的而使用映射处理时元素扩大是发生在映射过程中的。因此映射过程完程之后不需要reduce()提供合并器了。 上面的这个例子还是简单了一点下面再举一个例子,王者荣耀团队经济计算 #玩家使用的英雄以及当前获得的金币数public class HeroPlayerGold {/** 使用的英雄名字 */private String hero;/** 玩家的ID */private String player;/** 获得的金币数 */private int gold;public HeroPlayerGold(String hero, String player, int gold) {this.hero hero;this.player player;this.gold gold;}//省略get/set/toString }#玩家获得的金币数 public class Gold {/** 获得的金币数 */private int gold;public Gold(int gold) {this.gold gold;} //省略get/set/toString#测试类 public class Main {public static void main(String[] args) {learnMap2th();}private static void learnMap2th() {ListHeroPlayerGold lists new ArrayList();lists.add(new HeroPlayerGold(盖伦, RNG-Letme, 100));lists.add(new HeroPlayerGold(诸葛亮, RNG-Xiaohu, 300));lists.add(new HeroPlayerGold(露娜, RNG-MLXG, 300));lists.add(new HeroPlayerGold(狄仁杰, RNG-UZI, 500));lists.add(new HeroPlayerGold(牛头, RNG-Ming, 500));//计算团队经济int teamMoney lists.stream().map(player - new Gold(player.getGold()))//note1.mapToInt(Gold::getGold).reduce(0, (a, b) - a b);System.out.println(团队经济 teamMoney);//1700//计算团队经济2double teamMoney2 lists.stream().mapToDouble(HeroPlayerGold::getGold).reduce(0, (a, b) - a b);System.out.println(团队经济 teamMoney2);//1700.0} } 代码应该不难理解通过代码大家应该知道我们假设的场景了。我们的RNG去参加王者荣耀比赛了像这种团队游戏观众在经济方面关注更多的可能是团队经济而不是个人经济。 在我们 HeroPlayerGold类里面存有明星玩家使用的英雄和这局比赛某个玩家当前获得的金币数我们另有一个专们管理金币的 Gold类我们第一种计算团队经济的方式使把 HeroPlayerGold里面的 gold字段转换到 Gold里面了 //note1 ,这里产生的新流只包含了原始流中选定的 gold字段因为我们的原始流中包含了 hero、 player、 gold,三个字段我们只选取了 gold字段因为我们只关心这个字段所以其它的两个字段被丢弃了。然后从新流取出 Gold里面的 gold字段并把他转成一个 IntStream然后我们就要以通过缩减操作完成我们的团队经济计算了。 第一种方式大家需要好好理解理解了我相信你们的项目中很多很多地方可以用得上了再也不需要动不动就查数据库了怎样效率高怎样来只是一种建议。第二种只是快速计算团队经济而已没什么值得讲的。 接下来讲一下他的扩展方向大家还记得我在第二篇中介绍中间操作概念的时候吗 中间操作会产生另一个流。因此中间操作可以用来创建执行一系列动作的管道。我们可以把多个中间操作放到管道中所以我们很容易就创建出很强大的组合操作了发挥你的想象打出你们的组合拳; 我现在举一个例子比如现在相统计团队里面两个C位的经济占了多少代码看起来可能就是这样了 private static void learnMap2th() {ListHeroPlayerGold lists new ArrayList();lists.add(new HeroPlayerGold(盖伦, RNG-Letme, 100));lists.add(new HeroPlayerGold(诸葛亮, RNG-Xiaohu, 300));lists.add(new HeroPlayerGold(露娜, RNG-MLXG, 300));lists.add(new HeroPlayerGold(狄仁杰, RNG-UZI, 500));lists.add(new HeroPlayerGold(牛头, RNG-Ming, 500));//计算两个C位的经济和lists.stream().filter(player- RNG-Xiaohu.equals(player.getPlayer()) || RNG-UZI.equals(player.getPlayer())).map(player-new Gold(player.getGold())).mapToInt(Gold::getGold).reduce((a,b)-ab).ifPresent(System.out::println);//800} 大家有没有感觉这种操作怎么带有点数据库的风格啊其实在创建数据库查询的时候这种过滤操作十分常见如果你经常在你的项目中使用流API这几个条件算什么?等你们把流API用熟了之后你们完全可以通过这种链式操作创建出非常复杂的查询合并和选择的操作。 通过前面的例子我们已经把 map() mapToInt() mapToLong() mapToDouble都讲了。那么剩下的就是flatMap()方法了。本来想让大家自行去理解这个方法的因为怕这篇文章写得太长了。但是后面想想还是我来给大家分析一下吧。 StreamflatMap(Function mapper); 通过前面的学习我们知道 mapper是一个映射函数它和map()方法也一样也会返回一个新流我们把返回的新流称为映射流。我们提供的映射函数会处理原始流中的每一个元素而映射流中包含了所有经过我们映射函数处理后产生的新元素。 加粗部份需要重点理解。 我们来看一下源码对flatMap()的注释: The flatMap() operation has the effect of applying a one-to-many transformation to the elements of the stream, and then flattening the resulting elements into a new stream. 大意就是flatMap()操作能把原始流中的元素进行一对多的转换并且将新生成的元素全都合并到它返回的流里面。根据我们所学的知识他的这种一对多的转换功能肯定就是映射函数提供的这一点没有疑问吧然后源码的注释上面还提供了一个例子通过注释加例子我相信大家都能非常清楚地理解flatMap()了。 /* pIf {code orders} is a stream of purchase orders, and each purchase* order contains a collection of line items, then the following produces a* stream containing all the line items in all the orders:* pre{code*     orders.flatMap(order - order.getLineItems().stream())...* }/pre*/ 如果orders是一批采购订单对应的流并且每一个采购订单都包含一系列的采购项那么 orders.flatMap(order-order.getLineItems().stream())...生成的新流将包含这一批采购订单中所有采购项。 我们用伪代码来就更加清晰了 StreamOrdersOrderItemStream。大家能理解了吗还没理解再来一个例子 private static void learnFlatMap() {//(广州  深圳  上海  北京)的全拼的一些组合,下面我们就把每一个城市都划分一下ListString citys Arrays.asList(GuangZhou ShangHai, GuangZhou ShenZhen,ShangHai ShenZhen, BeiJing ShangHai, GuangZhou BeiJing, ShenZhen BeiJing);//这里打印的数组对应的地址citys.stream().map(mCitys - Arrays.stream(mCitys.split( ))).forEach(System.out::println);//note1System.out.println();//流里面的元素还是一个数组citys.stream().map(mCities - Arrays.stream(mCities.split( )))//流里面的每个元素还是数组.forEach(cities -cities.forEach(city- System.out.print(city )));//note2System.out.println();System.out.println();//直接一个flatMap()就把数组合并到映射流里面了citys.stream().flatMap(mCities-Arrays.stream(mCities.split( ))).forEach(System.out::println);//note3System.out.println();//使用distinct()方法去重citys.stream().flatMap(mCities-Arrays.stream(mCities.split( ))).distinct().forEach(System.out::println);//note4} 其中 //note1 处是无法打印元素的使用map()打印元素的方式在 //note2 原因也在注释中交待了但是使用了flatMap()方法后直接就可以打印了 //note3 到这里应该就能理解如果orders是一批采购订单对应的流并且每一个采购订单都包含一系列的采购项那么 orders.flatMap(order-order.getLineItems().stream())...生成的新流将包含这一批采购订单中所有采购项。 了吧。最后 //note4 是一个去重的方法大家运行一遍吧。 小结一下 通过这一篇文章相信大家对流API中的映射已经不再陌生了其实最需要注意的一个点是,map()和flatMap()的区别我也一步步地带着大家理解和应用了。其实在流API这一块中大家单单掌握概念是没什么用的一定要去实战了一个项目里面集合框架这种东西用得还是特别多的用到集合框架的大部份情况其实都可以考虑一下用Stream流去操作一下不仅增加效率还可以增加业务流程的清晰度。
http://www.zqtcl.cn/news/694160/

相关文章:

  • 文成做网站搜索引擎优化工具深圳
  • 网站源码下载平台小程序云开发费用
  • 网站建设的数字化和互联网化网站作品
  • 南京专业网站制作公司有哪些亚马逊网网站建设规划报告
  • app免费制作网站模板网站打开速度进行检测
  • 进下加强新闻宣传网站建设wordpress做论坛网站
  • 朝阳网站搭建公司淘宝导购网站备案
  • 京润珍珠企业网站优化洛阳做网站
  • 嘉定网站开发中山市区做网站公司
  • 可信赖的武进网站建设上海中小企业服务中心
  • 应用网站品牌官方网站
  • 网站建设综合训练的实验目的漳州网站建设网站运营
  • 网页设计免费网站推荐我的世界做壁纸的网站
  • 黄岩做网站的公司网站栏目相关内容在哪采集啊
  • 邯郸市城市建设局网站快速建站平台
  • 华为官方手表网站wordpress文章图片链接
  • 做个网站需要多久腾讯云云服务器官网
  • 松江企业做网站一个阿里云怎么做两个网站
  • 网站制作+app+公众号app制作定制外包88
  • 企业网站建设有哪些好处制作网页之前必须先建立什么
  • 盐亭县建设局网站网站建设基本技术
  • 优化seo网站高质量的邯郸网站建设
  • 网站开发 合同范本软件设计专业介绍
  • 南山网站建设设计莱州网站建设关键字排名优化网络托管微信代运营
  • 传统门户网站有哪些网络营销公司全网推广公司
  • 桥头镇网站建设卢松松外链工具
  • 手机网站导航设计大连市自然资源局
  • 装修网站vr全景图怎么做软件工程师证书报考条件
  • 部门网站建设管理经验交流材料定制开发app
  • 做网站 就google权重查询