我在学习如何使用java 8流时,发现了一些奇怪的事情。
<代码>数组。stream()具有除浮点数组之外的所有方法:
同样,有int、双精度等的Stream实现,但没有浮点数:
在t流中
长流
双流
有什么原因吗?
使用浮动流的推荐方法是什么?
我问自己这个问题。为了回答这个问题,我开始开发一个库,其中包括FloatToIntFunction和ByteToCharFunction,当然还有FloatStream、CharStream、ByteStream等等。这很快让我头痛。
要做到这一点,库开发人员需要做大量的工作,因为您必须在所有原始数据类型之间创建方法和接口。随着您实现更多的数据类型,它变得越来越乱。想象一下,必须实现方法从浮点数到所有其他原始类型,加倍到所有其他原始类型,char到所有其他原始类型,等等。
这方面的长期解决方案是Java添加值类型,以便您可以执行Stream之类的操作
看看Vahalla项目,了解这个特性的更新,这些特性将来可能会添加到Java中。http://openjdk.java.net/projects/valhalla/
来自Cay S.Horstmann的Java SE 8 for the Really ancert:
2.12. 基元类型流
...如果您想存储短、字符、字节和布尔值,请使用IntStream,对于浮点数,请使用DoubleStream。库设计者认为不值得再添加五种流类型。
这里有一个更好的方法,它不涉及复制数据。
DoubleStream ds = IntStream.range(0, floatArray.length)
.mapToDouble(i -> floatArray[i]);
问题内容: 当我发现有些奇怪的东西时,我正在学习如何使用Java 8流。 除了浮点数组外,其他所有方法都有: 类似地,也有用于int,double等的Stream实现,但没有float: 有什么理由吗? 推荐使用浮动流的方法是什么? 问题答案: 来自Cay S.Horstmann: 2.12。基本类型流 …如果要存储short,char,byte和boolean,请使用IntStream,对于fl
问题内容: 我有一个像 从上面的字符串中,我需要获取一个值。 当我使用替换所有功能。 当字符串有两个点时,这将不起作用。 浮点值的位置可能有所不同。 问题答案: 首先丢弃所有非float字符,然后像这样隐秘给Float:
问题内容: 在我的数据库中,我具有NextStatDistanceTime值作为浮点数。执行“ ”行时,出现错误 系统无效的强制转换异常 如何在此代码中从sql命令获取浮点值? 这是我的代码: 问题答案: 我想是时候放一张桌子了。 T-SQL类型名称 相当于.NET C#类型名称 `DataReader` 方法 `FLOAT` `System.Double` `double` `IDataRead
我有像0.152545这样的浮点值,我只想要0.1f。< br >这怎么可能..< br >通过使用String,我获得了字符串值。下面的代码显示了结果。 这给了我字符串值,如0.1f,但我只想要浮点值,如0.1f。
我正在寻找Java的的Python等价物。 我找到了这个python:获取和操纵(作为整数)浮点的位模式,但是有没有人知道一种不那么复杂的方法呢?
问题内容: 如何从文件中读取浮点数? 在文件第一列之前和数字之间的2个空格中。我立即有错误: 问题答案: 所以,我理解我的错误。我需要用 因为该扫描程序会干扰“。” 作为小数点分隔符,在我的语言环境(默认)中为“,”。另请注意,nextDouble可以识别1.1和3(整数) //根据此链接