Stream.flatMap()从char []到Character stream

问题描述 投票:1回答:1

import java.util。;导入java.util.stream。;

班级游乐场{

public static void main(String[] args) 
{ 
    // Creating a character array 
    char arr[] = { '1', '2', '3', '4', '5' }; 

    // --------- Using Stream.of() --------- 
    // Will work efficiently 

    // to convert int array into Stream 
    Stream<char[]> stream = Stream.of(arr); 
    Stream<Integer> s = stream.flatMap((item)->new String(item).chars().mapToObj(a->(char)a));

    // Displaying elements in Stream 
    s.forEach(str -> System.out.print(str + " ")); 
} 

}

我正在尝试使用flatMap()将char []转换为字符流,但是出现以下错误

./ Playground / Playground.java:14:错误:不兼容的类型:推断变量R具有不兼容的范围流s = stream.flatMap((item)-> new String(item).chars()。mapToObj(a->(char)a));^等式约束:整数下界:U,字符其中R,T,U是类型变量:R扩展了在flatMap(Function>)方法中声明的ObjectT扩展接口Stream中声明的对象U扩展在方法mapToObj(IntFunction)中声明的Object1个错误

需要帮助来了解错误以及如何完成此任务。

java stream lambdaexpression
1个回答
1
投票
  • 您可以将Arrays.stream()用于任何数组。
  • 您可以对任何类型为*的原始数组使用*Stream.of(),其中*为Int,Double等。>
  • 您可以将Stream.of()用于任何对象数组。
  • 上述所有以下工作。

Integer[] IntegerArray = {1,2,3,4};
Arrays.stream(IntegerArray).forEach(System.out::println);
Stream.of(IntegerArray).forEach(System.out::println);

int[] intArray = {1,2,3,4};
Arrays.stream(intArray).forEach(System.out::println);
IntStream.of(intArray).forEach(System.out::println);

double[] doubleArray = {1.2,3.3,4.5,6.7};
Arrays.stream(doubleArray).forEach(System.out::println);
DoubleStream.of(doubleArray).forEach(System.out::println);

String[] stringArray = {"a","b","c","d"};
Stream.of(stringArray).forEach(System.out::println);
© www.soinside.com 2019 - 2024. All rights reserved.