数值流

首先引入两个概念

原始类型:int、double、byte、char

引用类型:Integer、Byte、Object、List

在Java中:

①将原始类型转换为对应的引用类型的机制,这个机制叫做装箱。

②将引用类型转换为对应的原始类型,叫做拆箱。

 List<Dish>  menu=[{name:"糖醋排骨",calories:350},{ name:"西红柿鸡蛋",calories:181},{ name:"鸡蛋汤",calories:95}]

情况:求menu中的热量的和

int allCalories   = menu.stream().map(Dish::getCalories). reduce(0,Integer::sum) ;

这段代码的问题是,它有一个暗含的拆箱成本。每个 Integer 都必须拆箱成一个原始类型.Java 8引入了三个原始类型特化流接口来解决这个问题:
IntStream 、 DoubleStream 和LongStream ,分别将流中的元素特化为 int 、 long 和 double ,从而避免了暗含的拆箱成本
优化: 
转换: mapToInt()

menu.stream().mapToInt(Dish::getCalories).sum()

其中mapToInt()会把Stream转换成IntStream流。 IntStream 还支持max,min,average等方法。
转换成Stream流 在用 boxed() 方法。

  IntStream intStream = menu.stream().mapToInt(Dish::getCalories);Stream<Integer> stream = intStream.boxed();  
import java.sql.SQLOutput;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;public class Boxed {public static void main(String[] args) {// 生成一段[0,100)序列List<Integer> list = IntStream.range(1, 100).boxed().collect(Collectors.toList());System.out.println(list.stream().count());list.stream().forEach(a->System.out.println(a));}}

99
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99

java8 数值流 装箱和拆箱讲解相关推荐

  1. java8 数值流 装箱和拆箱讲解

    1.原始类型流特化 首先引入两个概念 原始类型:int.double.byte.char 引用类型:Integer.Byte.Object.List 在Java中,①将原始类型转换为对应的引用类型的机 ...

  2. 1.1 Java包装类、装箱和拆箱

    在 Java 的设计中提倡一种思想,即一切皆对象.但是从数据类型的划分中,我们知道 Java 中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为每种基本 ...

  3. java有装箱和拆箱吗_Java中装箱和拆箱,你真的都懂么?

    在给部门做分享的时候,一位同学提问说一直没搞明白Java的装箱和拆箱,让我给讲解下,所以才有了下面这篇文章: 本次文章根据PPT分享整理而成,会有5点: 1.什么是装箱和拆箱? 2.基本数据类型和包装 ...

  4. 堆和栈、值类型与引用类型、装箱与拆箱

    堆栈:内存条里的某一块. 电脑中有6个地方可以保存数据. <1>寄存器:保存最快.这东西在处理器内部.也就是CPU里的一小块地方给你放数据.既然是CPU,那么主要工作是计算,所以这块寄存器 ...

  5. Java中的装箱和拆箱—这一篇全了解

    Java中的拆箱装箱-这一篇全了解 一.什么是装箱?什么是拆箱? Java为每种基本数据类型都提供了对应的包装器类型,让基本类型具备对象的特征,实现更多的功能..在Java SE5之前,如果要生成一个 ...

  6. Java中的自动装箱和拆箱

    自动装箱和拆箱 自动装箱和拆箱 自动装箱: 拆箱 1. 为什么要有包装类(或封装类) 2. 基本数据类型与对应的包装类: 3. 类型间的转换 4. 何时发生自动装箱和拆箱 赋值.数值运算时 方法调用时 ...

  7. [Java开发之路](23)装箱与拆箱

    1. 简单介绍 大家对基本数据类型都很熟悉.比如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性,比方基本类型不能调用方法.功能简单. ..,为了让基本 ...

  8. java可以用 lt =判断int吗_int 和 integer:装箱和拆箱的过程,会用到什么方法

    本文转载自[微信公众号:五角钱的程序员,ID:xianglin965],经微信公众号授权转载,如需转载与原文作者联系 原文标题<int 和 integer :装箱和拆箱的过程,会用到什么方法,你 ...

  9. 包装类 || 装箱与拆箱

    包装类 概述 装箱与拆箱 基本数值---->包装对象 包装对象---->基本数值  装箱:把基本类型的数据,包装到包装类中(基本类型的数据->包装类)         构造方法:   ...

最新文章

  1. 独家 | 手把手教你怎样用Python生成漂亮且精辟的图像(附教程代码)
  2. java.sql.SQLException: Column ‘class‘ not found.异常没有找到列
  3. 物理机存放mysql实例原则_MySQL优化笔记(四)--表的设计与优化(单表、多表)...
  4. div嵌套,内层的margin-top会跑到外层
  5. 卷积与反卷积、步长(stride)与重叠(overlap)及 output 的大小
  6. oracle 10修改游标,Oracle10.2并发条件下更新游标数据的研究
  7. 用任何依赖中转服务器的远控软件,打造一款属于自己的远程控制软件(一)
  8. MGMT_VIEW 用户的功能与作用
  9. console口设置登录密码
  10. 安装程序无法打开注册表项 UNKNOWN\Components\…解决办法
  11. Yourkit 监控Jetty(stand-alone)
  12. 如何正确使用 GC.SuppressFinalize()?
  13. Dart基础语言 — Runes
  14. 基于java web的学生考勤带请假管理系统-计算机毕业设计
  15. git 录制简单实用好工具 LICEcap
  16. 唯样商城:英飞凌 —— 一文弄懂IGBT驱动
  17. ipad wifi信号测试软件,总有适合你 iPad六种无线上网方式汇总
  18. 频分复用(Frequency Division Multiplexer)
  19. C++_list快速学习入门(中英文结合)
  20. 使用 ipmi 进行远程控制服务器(重装系统、开关机)

热门文章

  1. myecplise/ecplise git提交代码到远程托管仓库完整教程(转载)
  2. web安全入门 day01——概念名词
  3. 码支付最新接口,苹果CMS码支付最新接口
  4. 苹果安卓360免费WiFi实现网络共享
  5. 如何用视频制作动图? 视频转gif动图怎么做?
  6. 关于QQ的SSO登录
  7. 【老系统改造】---登陆页面加验证码
  8. 机器学习笔记(7)stacking算法
  9. IO复用的总结及一些问题
  10. 考研初试考场究竟长啥样?过来人为你揭秘!