将Streams与原始数据类型和相应的包装一起使用

ifloop:

在使用Java8的Streams-API时,我偶然发现了以下内容:

要将原始包装类对象数组转换为StreamI,只需调用Stream.of(array)但是要转换原始数据类型的数组,我必须.of(array)从相应的包装器(类)流类(<-听起来很傻)中调用

一个例子:

final Integer[] integers = {1, 2, 3};
final int[]     ints     = {1, 2, 3};


Stream.of(integers).forEach(System.out::println); //That works just fine

Stream.of(ints).forEach(System.out::println);     //That doesn't

IntStream.of(ints).forEach(System.out::println);  //Have to use IntStream instead


我的问题:为什么?这是否与例如Arrays.asList()仅适用于包装类数组的行为相关

Honza Zidek:

爪哇8流框架有一个通用Stream<T>的对象作为元素,以及三个原始流IntStreamLongStreamDoubleStream对三个主要的原语。如果您使用基元,请使用后一种IntStream

看图片:

在此处输入图片说明

其背后是:

  1. Java泛型不能与原始类型一起使用:可以仅具有List<Integer>and Stream<Integer>,而不能具有List<int>andStream<int>

  2. Java集合引入框架,据介绍只有上课,所以如果你想拥有ListintS,你必须给他们换到Integer秒。这很昂贵!

  3. Java流引入的框架,他们决定来解决这个开销和并行的“面向类的”流(使用泛型机制),他们推出了三个额外的套均化库功能,专为最重要的设计基本类型:intlongdouble

在这里也可以看到一个奇妙的解释:https : //stackoverflow.com/a/22919112/2886891

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用原始数据和包装器数据类型有什么区别,包装器数据类型需要什么?

将ajax与数据类型json一起使用

JavaScript中原始数据类型和非原始数据类型的区别

最佳实践:使用什么,包装类或原始数据类型?

将#define 和 typedef 与数据类型一起使用是一种好习惯吗?

抽象和原始数据类型(ADT)

将通用参数转换为原始数据类型

JavaScript中原始数据类型和非原始数据类型有什么区别?

在模式之间一起awk打印特定变量和原始数据

Javascript中的Refreence数据类型和原始数据类型

如何检测原始数据类型?

Java原始数据类型数组

验证原始数据类型

Java中的原始数据类型

如何使条件与数据类型 BOOLEAN 一起使用

如何获得数值数据类型以与Postgresql和Sequel ORM一起使用?

将unordered_multimap与struct数据类型一起使用

将Z3 QFNRA策略与数据类型一起使用:交互或内联

将向量与包含不可复制数据类型的类一起使用

是否可以将Hibernate与PostgreSql的JSONB数据类型一起使用?

将jmockit期望与匹配器和原始类型一起使用

Drools 中原始数据类型与非原始数据类型的性能

使用j2objc将原始数据类型从Java映射到Objective-C

使用Laravel中的GuzzleClient从另一个应用程序返回原始数据类型(集合)

用于原始数据类型和类数据类型的equals()方法和'=='运算符

将Shiny的input $ plot_click与原始数据结合在一起时的值不匹配

对于R中的文本挖掘,如何将DocumentTermMatrix与原始数据帧结合在一起?

Jackson JDK8数据类型和参数名称模块不能一起使用

将运算符<<与隐式转换的非基本数据类型一起使用时出错