当前位置: 首页 > 知识库问答 >
问题:

无法将Char[]转换为java 8中的stream[重复]

赫连鸿振
2023-03-14
private static char[] getTableFromTwoChits(char[][] inputTwoChits) {
    Map<Character, Character> map = new HashMap<>();
    Arrays.stream(inputTwoChits).forEach(x -> map.put(x[0], x[1]));
    map.entrySet().forEach(System.out::println);
    char[] result = new char[inputTwoChits.length+1]; int index=0;
    char startPoint = inputTwoChits[0][0];
    do {
       result[index] = startPoint;index++;
       startPoint = map.get(startPoint);
    }while(startPoint != inputTwoChits[0][0]);
    result[index] = startPoint;
    return result;
}


主要方法如下-

public static void main(String[] args) {
    char[][] inputTwoChits = {{'A','B'},{'C','D'},{'B','C'},{'E','F'},{'F','A'},{'D','E'}};
    char[] outputTwoChits = getTableFromTwoChits(inputTwoChits);
    Arrays.stream(outputTwoChits).forEach(System.out::println);

}


方法getTableFromTwoChits()中的第2行正在编译fine,而main方法的第3行没有编译。
请解释这种行为背后的原因是什么?

编译错误如下所述-

/CircularTableTwoChits.java:21: error: no suitable method found for stream(char[])
        Arrays.stream(outputTwoChits).forEach(System.out::println);
              ^
    method Arrays.<T#1>stream(T#1[]) is not applicable
      (inference variable T#1 has incompatible bounds
        equality constraints: char
        upper bounds: Object)
    method Arrays.<T#2>stream(T#2[],int,int) is not applicable
      (cannot infer type-variable(s) T#2
        (actual and formal argument lists differ in length))
    method Arrays.stream(int[]) is not applicable
      (argument mismatch; char[] cannot be converted to int[])
    method Arrays.stream(long[]) is not applicable
      (argument mismatch; char[] cannot be converted to long[])
    method Arrays.stream(double[]) is not applicable
      (argument mismatch; char[] cannot be converted to double[])
  where T#1,T#2 are type-variables:
    T#1 extends Object declared in method <T#1>stream(T#1[])
    T#2 extends Object declared in method <T#2>stream(T#2[],int,int)
Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output
1 error

共有1个答案

温峻熙
2023-03-14

对于类型intlongdouble和引用类型(对象)的元素,只有四种流类型。因此,由于没有char流,arrays.stream不能应用于char[]数组。

字符流的规范表示是intstream,在没有复制或装箱开销的情况下获取它的工作如下

CharBuffer.wrap(charArray).chars().forEach(c -> System.out.println((char)c));

由于int值的默认解释是“integer number”,因此需要使用将其转换为charlambda表达式将其解释为“character”。

System.out.println(String.valueOf(charArray));
 类似资料:
  • 问题内容: 有没有办法将a 变成a 或将一个字母变成a (例如如何将a 变成a 和a 变成an )?(如果可以,请链接到相关文档)。 我该如何找到在文档中才隐约知道的类似内容? 问题答案: 您可以通过确定可能涉及的类来查找文档。在这里,候选人是和。 您应该先熟悉以下内容: 原始包装 中的Java Collection框架 它还有助于通过教程更慢地介绍API。 处理字符串中的字符

  • 我知道如何从->“转换”一个简单的Java,即: 现在我想用一张地图做基本相同的操作,即: 解决方案不应局限于->。就像上面的示例一样,我希望调用任何方法(或构造函数)。

  • 我从Java开始,希望将查询转换为Lambda中的SQL或Java 8中的Stream。 按照下面的查询操作。 我创建了下面带有getters和setters的Correpondencia类: 我创建了一个列表: 现在我想根据下面的查询用Lambda或Stream过滤课程: 这将返回m1的最大值,按entidadeOrigem的项目分组: 一位同事给了我以下代码: 但是,它只返回entidadeO

  • 问题内容: 将a转换为a 的最直接和/或最有效的方法是什么? 问题答案: 没有副本: 但是,该方法可能更容易编写,更容易阅读和更快。

  • 问题内容: 我已经通过使用JNI 将URL字符串从Java传递为C代码作为数据类型。我的库方法需要一个as url。 我如何转换的? PS:在C中使用jcharArray有什么优势吗?(即在本地方法中传递而不是字符串) 问题答案: 这是我开始使用JNI时发现的几个有用的链接 http://en.wikipedia.org/wiki/Java_Native_Interface http://down