通过自学Java8的Stream的笔记——mark

自学的Stream,主要就是几个API,在这里记录下载,以免遗忘

首先就是将集合转换成Stream流,当时举例:

ArrayList<String> list = new ArrayList<String>();

Stream<String> s1 = list.stream();

Object[] array = list.toArray();

Stream<Object> s2 = Arrays.stream(array);

Stream<String> s3 = Stream.of("a","aa");

还有一种是迭代生成:

Stream<Integer> s4 = Stream.iterate(0, (x) -> x+2);

s4.filter((e) -> e<10).filter((a) -> a>0).forEach(System.out::println);

这里做的时输出大于0小于10的循环输出

Stream的filter方法:

是指接受一个lambda表达式,从stream中选择出符合条件的元素

List<Employee> employees = Arrays.asList(
new Employee("1",1 ,1 ),
new Employee("2",2 ,2 ),
new Employee("3",3 ,3 ),
new Employee("4",4 ,4 ),
new Employee("5",5 ,5 )
);

Stream<Employee> s = employees.stream();

s.filter((e) -> e.getAge()>2).filter((a) -> a.getMoney()<= 4).forEach(System.out::println);

备注:括号内的条件是结果需要满足的条件


Stream的map方法:

是指接受一个函数(funtion),这个函数会被应用到每个元素上,从而应映射成一个新元素

flatMap方法与map方法了类似,但是当出现集合嵌套集合的情况时,map方法的结果遍历是会出现嵌套遍历,为了免除麻烦,使用flatMap方法,只会饭会议和集合类似(addAll)方法


Stream的排序sorted:

employees.stream()
.sorted((a,b) -> {
if(a.getAge().equals(b.getAge())) {
return a.getName().compareTo(b.getName());
}else {
return a.getAge().compareTo(b.getAge());
}

}).forEach(System.out::println);

按照年龄排序,年龄相同按照姓名排序

Stream的匹配查找:

Stream<Employee> s = employees.stream();
boolean b = s.allMatch((e) -> e.getName().equals("1"));

System.out.println(b);

代码,查询集合中的元素属性是否全都匹配---allMatch

                                               是否至少匹配一个元素---anyMatch

                                                是不是没有匹配所有元素---noneMatch  双重否定

                                                返回第一个元素--findFirst

                                                元素的个数---count    

                                                最大数----max

                                                最小数---min


Stream的归约

reduce -- 可以将流中元素反复结合起来,得到一个值

Stream<Employee> s = list.stream();

Optional<Integer> reduce = s.map(Employee::getAge).reduce(Integer::sum);

Stream的收集器

collect -- 将流转换为其他形式。接收一个 Collector接口的实现,用于给Stream中元素做汇总的方法

List<String> collect = list.stream().map(Employee::getName)

.collect(Collectors.toList());

将集合元素的名字取出来单独存入一个新的集合

如果需要存放到特殊的数据结构的集合中

HashSet<String> set = list.stream()
.map(Employee::getName)

.collect(Collectors.toCollection(HashSet::new));

收集年龄之和:

Integer integer = list.stream()

.collect(Collectors.summingInt(Employee::getMoney));

                        其余方法基本重复,就此略过


推荐函数算法:

DoubleSummaryStatistics dss = list.stream()

.collect(Collectors.summarizingDouble(Employee::getMoney));

得到集合的money



        完美~~







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值