从 Java 中的 char 数组创建字符流 您所在的位置:网站首页 char转char数组 从 Java 中的 char 数组创建字符流

从 Java 中的 char 数组创建字符流

2023-09-29 22:31| 来源: 网络整理| 查看: 265

这篇文章将讨论如何从 Java 中的原始字符数组创建字符流。

Java 提供了 Stream, IntStream, LongStream, 和 DoubleStream 类来获取对象和原始 int、long 和 double 类型的流。 Java 不为原始字符提供字符流。所以我们不能申请 Arrays.stream() 方法 char[] 数组。但是,我们可以得到一个 IntStream (整数流)字符并使用它来生成 Stream.

1. 使用字符串对象

一个简单的解决方案来获得 IntStream 字符使用 String.chars() 方法。获得后 IntStream 字符,将其框到 Stream 通过使用 lambda 表达式转换 char i -> (char) i 里面 mapToObj() 方法。

123456789101112 import java.util.stream.Collectors;import java.util.stream.Stream; public class Main {    public static void main(String[] args) {         char[] chars = {'a', 'b', 'c', 'd'};        Stream charStream = new String(chars).chars().mapToObj(i -> (char)i);         System.out.println(charStream.collect(Collectors.toList()));    }}

下载  运行代码

输出: [a, b, c, d]

2.使用 IntStream.range()

另一种选择是得到 IntStream 的指数正在使用 IntStream.range() 方法。获得后 IntStream, 装箱到 Stream 通过使用 lambda 表达式转换 char i -> chars[i] 里面 mapToObj() 方法。

1234567891011121314 import java.util.stream.Collectors;import java.util.stream.IntStream;import java.util.stream.Stream; public class Main {    public static void main(String[] args) {         char[] chars = {'a', 'b', 'c', 'd'};        Stream charStream = IntStream.range(0, chars.length)                .mapToObj(i -> chars[i]);         System.out.println(charStream.collect(Collectors.toList()));    }}

下载  运行代码

输出: [a, b, c, d]

3.使用 CharBuffer.wrap() 方法

从原始字符数组创建 IntStream 的另一种合理方法是使用 CharBuffer.获得后 IntStream 字符,将其框到 Stream 通过使用 lambda 表达式转换 char i -> (char) i 里面 mapToObj() 方法。

123456789101112131415 import java.nio.CharBuffer;import java.util.stream.Collectors;import java.util.stream.Stream; public class Main {    public static void main(String[] args) {         char[] chars = {'a', 'b', 'c', 'd'};         Stream charStream = CharBuffer.wrap(chars).chars()                                            .mapToObj(i -> (char)i);         System.out.println(charStream.collect(Collectors.toList()));    }}

下载  运行代码

输出: [a, b, c, d]

4. 使用 Guava 的 Chars 类

这里的想法是创建一个盒装字符列表 List 并得出 Stream 从中。你可以使用Guava的 Chars.asList() 将原始字符数组包装为 List 类型。

1234567891011121314 import com.google.common.primitives.Chars; import java.util.stream.Collectors;import java.util.stream.Stream; public class Main {    public static void main(String[] args) {         char[] chars = {'a', 'b', 'c', 'd'};        Stream charStream = Chars.asList(chars).stream();         System.out.println(charStream.collect(Collectors.toList()));    }}

下载代码

输出: [a, b, c, d]

5. 使用流生成器

最后,我们可以创建一个 Stream Builder 并向其添加字符。然后使用 build() 获取方法 Stream 从中。

1234567891011121314151617 import java.util.stream.Collectors;import java.util.stream.Stream; public class Main {    public static void main(String[] args) {         char[] chars = {'a', 'b', 'c', 'd'};         Stream.Builder charStreamBuilder = Stream.builder();        for (char c: chars) {            charStreamBuilder.accept(c);        }        Stream charStream = charStreamBuilder.build();         System.out.println(charStream.collect(Collectors.toList()));    }}

下载  运行代码

输出: [a, b, c, d]

这就是从 Java 中的原始字符数组创建字符流的全部内容。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有