想要从java中的char数组创建字符流

2022-08-31 14:31:27

从char数组中,我想构造一个流来使用java 8功能,如过滤器和地图。

char[] list = {'a','c','e'};
Stream<Character> cStream = Stream.of(list);
// Stream<Character> cStream = Arrays.stream(list);

第一种方法不起作用(原因:将 cStream 更改为 )。注释行也不起作用(原因:Arrays 类型中的方法不适用于参数 ())。Stream<char[]>stream(T[])char[]

我知道,如果更改为 ,则使用一切正常。但是我不想每次都转换为每次,或者当我需要在数组上使用流库时更改为列表。char[] listint[]IntStreamchar[]int[]char


答案 1

您可以使用 来生成索引,后跟 :IntStreammapToObj

char[] arr = {'a','c','e'};
Stream<Character> cStream = IntStream.range(0, arr.length).mapToObj(i -> arr[i]);

答案 2

执行此操作的一种方法是通过 String 对象:

char[] list = {'a','c','e'};
Stream<Character> charStream = new String(list).chars().mapToObj(i->(char)i);

我喜欢这样做,因为转换数组的所有复杂性都被包装到 String 创建中,并且 char 的包装也在幕后为我执行,所以我可以专注于业务逻辑。


推荐