从 Java 中的 char 数组创建字符流 | 您所在的位置:网站首页 › char转char数组 › 从 Java 中的 char 数组创建字符流 |
这篇文章将讨论如何从 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 实验室设备网 版权所有 |