首页 > 解决方案 > 流式传输和过滤字符串以获取 char[] 数组

问题描述

我正在尝试使用类似下面的内容来按字母数字字符流式传输和过滤给定的字符串。

    List<String> alphanumeric = Arrays.asList("012345689abcdefhijklmnopqrstuvwxyz".split(""));

    char[] ssplit =  Arrays.asList(s.toLowerCase().split(""))
            .stream()
            .filter(alphanumeric::contains)
            .map(i -> i.charAt(0))
            .toArray(new char[0]);

但后来我得到以下错误:

error: method toArray in interface Stream<T> cannot be applied to given types;
            .toArray(new char[0]);
            ^
  required: IntFunction<A[]>
  found: char[]
  reason: cannot infer type-variable(s) A

我在这里做错了什么?错误消息对我来说零意义

标签: java

解决方案


在您的情况下,正则表达式可能是正确的解决方案,或者将您的数组更改为Character[]. 但是,如果您需要一个 char 数组,您可以执行以下操作:

char[] ssplit =  Arrays.asList(s.toLowerCase().split(""))
        .stream()
        .filter(alphanumeric::contains)
        .collect(Collectors.joining())
        .toCharArray();

推荐阅读