本文共 819 字,大约阅读时间需要 2 分钟。
到目前为止,我们都是将整数收集到Stream中,尽管很明显,将每个整数都包装到包装器对象中是很低效的。对其他基本类型来说,情况也是一样,这些基本类型是:double、f?loat、long、short、char、byte和boolean。流库中具有专门的类型IntStream、LongStream和DoubleStream,用来直接存储基本类型值,而无需使用包装器。如果想要存储short、char、byte和boolean,可以使用IntStream,而对于f?loat,可以使用DoubleStream。
为了创建IntStream,需要调用IntStream.of和Arrays.stream方法:与对象流一样,我们还可以使用静态的generate和iterate方法。此外,IntStream和LongStream有静态方法range和rangeClosed,可以生成步长为1的整数范围:
CharSequence接口拥有codePoints和chars方法,可以生成由字符的Unicode码或由UTF-16编码机制的码元构成的IntStream。(请参见第2章以了解其复杂的细节。)
当你有一个对象流时,可以用mapToInt、mapToLong和mapToDouble将其转换为基本类型流。例如,如果你有一个字符串流,并想将其长度处理为整数,那么就可以在IntStream中实现此目的:
为了将基本类型流转换为对象流,需要使用boxed方法:
注意:Random类具有ints、longs和doubles方法,它们会返回由随机数构成的基本类型流。
程序清单1-7给出了基本类型流的API的示例。
程序清单1-7 streams/PrimitiveTypeStreams.javajava.util.stream.IntStream 8
java.util.stream.DoubleStream 8
转载地址:http://dvcia.baihongyu.com/