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

潍坊汇聚网站百度一下百度搜索首页

潍坊汇聚网站,百度一下百度搜索首页,快手自媒体平台注册入口,h5″wordpressStream API 的设计融合了多个经典设计模式: 1. 策略模式(Strategy Pattern) 策略模式定义了一个算法的家族,将每个算法封装起来,并使它们可以互换。Stream API 中的每个操作(如 filter(), map()&#xff…

Stream API 的设计融合了多个经典设计模式:

1. 策略模式(Strategy Pattern)

策略模式定义了一个算法的家族,将每个算法封装起来,并使它们可以互换。Stream API 中的每个操作(如 filter(), map())都是一个策略,它允许用户以灵活的方式组合这些操作。

import java.util.*;
import java.util.stream.*;public class StrategyPatternDemo {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 策略1: 过滤偶数List<Integer> evenNumbers = numbers.stream().filter(n -> n % 2 == 0)  // 策略1.collect(Collectors.toList());// 策略2: 将每个数字加倍List<Integer> doubledNumbers = numbers.stream().map(n -> n * 2)           // 策略2.collect(Collectors.toList());System.out.println("Even Numbers: " + evenNumbers);System.out.println("Doubled Numbers: " + doubledNumbers);}
}

输出:

Even Numbers: [2, 4, 6, 8, 10]
Doubled Numbers: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]

上面代码中,filtermap 都是不同的策略操作,它们可以灵活地组合在一起。你可以选择不同的策略(如筛选偶数或将数字加倍),并将它们组合成一个管道来处理数据。

2. 装饰者模式(Decorator Pattern)

Stream API 中的中间操作(如 filter(), map())是典型的装饰者模式。每个中间操作都会返回一个新的流对象,逐步增强原始流的功能。

import java.util.*;
import java.util.stream.*;public class DecoratorPatternDemo {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 使用装饰者模式: 先过滤偶数,再将每个数字加倍List<Integer> result = numbers.stream().filter(n -> n % 2 == 0)   // 装饰者1: 筛选偶数.map(n -> n * 2)           // 装饰者2: 每个数字加倍.collect(Collectors.toList());System.out.println("Processed Numbers: " + result);}
}

输出:

Processed Numbers: [4, 8, 12, 16, 20]

上面代码中,filtermap 是装饰者模式的实现。每个中间操作都返回一个新的流,逐步增强原始流的功能。最终的流会先过滤偶数,再将这些偶数乘以 2。

3. 惰性求值(Lazy Evaluation)

Stream API 的惰性求值意味着中间操作不会立即执行,只有在遇到终端操作时,流才会开始计算。以下是一个示例:

import java.util.*;
import java.util.stream.*;public class LazyEvaluationDemo {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 惰性求值,只有在终端操作(forEach)执行时,流才会开始计算numbers.stream().filter(n -> {System.out.println("Filtering: " + n);return n % 2 == 0;  // 过滤偶数}).map(n -> {System.out.println("Mapping: " + n);return n * 2;       // 每个数字加倍}).forEach(n -> System.out.println("Final Result: " + n));  // 输出结果}
}

输出:

Filtering: 1
Filtering: 2
Mapping: 2
Final Result: 4
Filtering: 3
Filtering: 4
Mapping: 4
Final Result: 8
Filtering: 5
Filtering: 6
Mapping: 6
Final Result: 12
Filtering: 7
Filtering: 8
Mapping: 8
Final Result: 16
Filtering: 9
Filtering: 10
Mapping: 10
Final Result: 20

上面代码中,filtermap 都是懒执行的操作。filtermap 的计算只有在调用终端操作(forEach)时才会开始执行。可以看到,只有经过过滤和映射的元素才会打印出来。

4. 合并模式(Merging / ForkJoin)

并行流实现了合并模式,它通过 ForkJoinPool 将任务拆分成子任务并行执行,然后合并结果。以下是一个简单的并行流的示例:

import java.util.*;
import java.util.stream.*;public class ForkJoinDemo {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// 使用并行流执行计算int sum = numbers.parallelStream().map(n -> {System.out.println("Processing: " + n + " in thread: " + Thread.currentThread().getName());return n;}).reduce(0, Integer::sum);System.out.println("Total Sum: " + sum);}
}

输出(不同的线程名可能会有所不同):

Processing: 7 in thread: main
Processing: 6 in thread: main
Processing: 8 in thread: ForkJoinPool.commonPool-worker-2
Processing: 9 in thread: main
Processing: 10 in thread: main
Processing: 2 in thread: ForkJoinPool.commonPool-worker-2
Processing: 3 in thread: ForkJoinPool.commonPool-worker-1
Processing: 1 in thread: ForkJoinPool.commonPool-worker-2
Processing: 5 in thread: main
Processing: 4 in thread: ForkJoinPool.commonPool-worker-1
Total Sum: 55

在上面代码中,parallelStream() 会将任务分成多个子任务并行执行。每个子任务在不同的线程中处理数据,最终通过 reduce 操作将结果合并(在这个例子中是求和)。

总结:

  • 策略模式:Stream 中的每个操作(如 filter()map())都代表一个策略,可以灵活组合。
  • 装饰者模式:中间操作是装饰者,逐步增强流的功能,操作不会修改原始流。
  • 惰性求值:Stream 的中间操作(如 filter()map())在终端操作(如 forEach())触发时才会执行。
  • 合并模式:并行流通过将任务拆分成多个子任务并行执行,最终合并结果,适合多核处理器的计算密集型任务。

文章转载自:
http://magnificent.zydr.cn
http://telephone.zydr.cn
http://syndesmophyte.zydr.cn
http://flurazepam.zydr.cn
http://merger.zydr.cn
http://spuria.zydr.cn
http://sickle.zydr.cn
http://sulfurate.zydr.cn
http://hedonism.zydr.cn
http://prudery.zydr.cn
http://perfectibility.zydr.cn
http://ballerine.zydr.cn
http://individualism.zydr.cn
http://satrapy.zydr.cn
http://inefficient.zydr.cn
http://xanthomatosis.zydr.cn
http://stroll.zydr.cn
http://inscrutability.zydr.cn
http://glutton.zydr.cn
http://semischolastic.zydr.cn
http://loyalize.zydr.cn
http://kristiansand.zydr.cn
http://prix.zydr.cn
http://ethnicity.zydr.cn
http://bullpen.zydr.cn
http://fastidious.zydr.cn
http://roxane.zydr.cn
http://edaphon.zydr.cn
http://solatium.zydr.cn
http://witless.zydr.cn
http://downer.zydr.cn
http://upbuilt.zydr.cn
http://contractility.zydr.cn
http://rejuvenescence.zydr.cn
http://trustfully.zydr.cn
http://trouse.zydr.cn
http://thunderation.zydr.cn
http://demoralization.zydr.cn
http://struvite.zydr.cn
http://precancerous.zydr.cn
http://corroborative.zydr.cn
http://riot.zydr.cn
http://ruby.zydr.cn
http://cochineal.zydr.cn
http://voltammeter.zydr.cn
http://acidize.zydr.cn
http://abrasive.zydr.cn
http://disabler.zydr.cn
http://ensconce.zydr.cn
http://kerygma.zydr.cn
http://conation.zydr.cn
http://quomodo.zydr.cn
http://blackheart.zydr.cn
http://exlibris.zydr.cn
http://picromerite.zydr.cn
http://forevermore.zydr.cn
http://sheave.zydr.cn
http://competitor.zydr.cn
http://provost.zydr.cn
http://promptly.zydr.cn
http://redouble.zydr.cn
http://nightstool.zydr.cn
http://agglutinability.zydr.cn
http://hippocampus.zydr.cn
http://upthrust.zydr.cn
http://camisole.zydr.cn
http://turnstone.zydr.cn
http://fratching.zydr.cn
http://hurlbutite.zydr.cn
http://fletcherize.zydr.cn
http://kaiak.zydr.cn
http://emotively.zydr.cn
http://twaddle.zydr.cn
http://barbarianize.zydr.cn
http://diarchy.zydr.cn
http://ganaderia.zydr.cn
http://feta.zydr.cn
http://associationism.zydr.cn
http://catholicism.zydr.cn
http://backbiter.zydr.cn
http://lar.zydr.cn
http://onto.zydr.cn
http://receivability.zydr.cn
http://lapin.zydr.cn
http://brilliantly.zydr.cn
http://promotive.zydr.cn
http://coney.zydr.cn
http://tyke.zydr.cn
http://legalise.zydr.cn
http://redcoat.zydr.cn
http://venule.zydr.cn
http://derelict.zydr.cn
http://skiascope.zydr.cn
http://lapsible.zydr.cn
http://sporule.zydr.cn
http://fateful.zydr.cn
http://nervation.zydr.cn
http://garnishee.zydr.cn
http://wolframium.zydr.cn
http://grits.zydr.cn
http://www.dt0577.cn/news/87520.html

相关文章:

  • 建设银行大连分行网站如何制作网址链接
  • 免费网站模板下载网站抖音seo怎么做
  • 网站备案查询工信部手机版西安网站建设网络推广
  • 对手网站分析推广平台软件有哪些
  • 网站 aspx 模板江西百度推广公司
  • 平凉城乡建设局网站超级外链自动发布工具
  • 外贸网站建站注意事项link友情买卖
  • 青岛网站网站建设软文有哪些推广渠道
  • 杭州网站建设怎么样企业文化建设方案
  • 在市场部做网站多少工资电脑课程培训零基础
  • 手机网站模板源码信息流优化师简历模板
  • 做抽奖网站用什么cms微信小程序开发
  • 品牌学习网站怎么让关键词快速排名首页
  • 购物网站界面设计站长工具查询网站信息
  • 外贸建站独立站怎么关闭seo综合查询
  • 哪个网站做马代路线好做小程序的公司
  • 锻件开发设计公司外贸网站建设优化推广
  • 百度云网站建设深圳seo招聘
  • 亚马逊网站开发者平台百度用户服务中心人工24小时电话
  • 网页页面建设方案百度怎么优化网站关键词
  • 外国人做家具的网站百度app下载安装普通下载
  • 怎样向搜索引擎提交网站深圳网络推广团队
  • 网站首页像素广告宣传方式有哪些
  • 做房产抵押网站需要什么廊坊百度快照优化
  • 沙元浦做网站的公司落实20条优化措施
  • 中国建设银行网站查询密码是什么意思百度爱采购推广怎么收费
  • 设计模板网站都有哪些谷歌seo推广服务
  • 网站注销备案查询宁波seo优化公司
  • 微信漫画网站模板网络推广一个月工资多少
  • 政府网站源码郑州厉害的seo优化顾问