Java 8 打印与Java8中的数组流不同
如何在Java8中从数组流打印不同的元素 我正在玩Java-8,并试图了解它如何与distinct一起工作 Arrays.stream通常返回一个流,但它有一个重载版本:streamint[]array,它返回一个IntStream,这是一个基本整数流。IntStream.distinct也返回一个IntStream 为了收集它,您可以使用collectCollectors.toList: 还可以将结果存储到int[]中: Arrays.stream通常返回一个流,但它有一个重载版本:streamint[]array,它返回一个IntStream,这是一个基本整数流。IntStream.distinct也返回一个IntStream 为了收集它,您可以使用collectCollectors.toList: 还可以将结果存储到int[]中:Java 8 打印与Java8中的数组流不同,java-8,Java 8,如何在Java8中从数组流打印不同的元素 我正在玩Java-8,并试图了解它如何与distinct一起工作 Arrays.stream通常返回一个流,但它有一个重载版本:streamint[]array,它返回一个IntStream,这是一个基本整数流。IntStream.distinct也返回一个IntStream 为了收集它,您可以使用collectCollectors.toList: 还可以将结果存储到int[]中: Arrays.stream通常返回一个流,但它有一个重载版本:strea
您无法直接看到不同的值,因为它不是一个终端操作,并且它返回的IntStream如文档中所述: 返回由此流的不同元素组成的流 您必须终止流,类似于示例中已有的代码:
List<String> distinctElements = list.stream()
.distinct()
.boxed()
.collect(Collectors.toList());
在这里,您调用方法,它是一个终端操作,您将得到一个不同元素的列表作为回报
和都是终端操作,它们立即执行计算,关闭流并返回一个值。您无法直接看到不同的值,因为它不是终端操作,它返回IntStream,如文档中所述: 返回由此流的不同元素组成的流 您必须终止流,类似于示例中已有的代码:
List<String> distinctElements = list.stream()
.distinct()
.boxed()
.collect(Collectors.toList());
在这里,您调用方法,它是一个终端操作,您将得到一个不同元素的列表作为回报
和都是终端操作,它们立即执行计算,关闭流并返回一个值。我认为我们不能这样做:这一行有多个标记-方法collectSupplier,ObjIntConsumer,IntStream类型中的BiConsumer不适用于参数收集器-类型不匹配:无法从收集器转换为Supplier@Prateek我明白了,你必须先把它转换成一个流。这可以用boxed方法完成。我不认为我们可以在上面这样做:这一行有多个标记-类型IntStream中的方法collectSupplier、ObjIntConsumer、BiConsumer不适用于参数Collector-类型不匹配:无法从Collector转换为Supplier@Prateek我明白了,你必须先把它转换成一个流。这可以用装箱法来完成。我说的是数组Stream@PrateekArrays.streamnumbers返回流对象。嘿,我们不能直接使用Arrays.streamnumbers.distinct.collectCollectors.toList;,请参阅下面显示的错误comments@Prateek您必须在收集之前使用.boxed从IntStream切换到流,它将起作用。要赶上只想打印它的问题代码,您可以不使用boxed:System.out.printlnArrays.tostringarays.streamnumbers.distinct.toArray;我说的是阵列Stream@PrateekArrays.streamnumbers返回流对象。嘿,我们不能直接使用Arrays.streamnumbers.distinct.collectCollectors.toList;,请参阅下面显示的错误comments@Prateek您必须在收集之前使用.boxed从IntStream切换到流,它将起作用。要赶上只想打印它的问题代码,您可以不使用boxed:System.out.printlnArrays.tostringarays.streamnumbers.distinct.toArray@为什么要投反对票?@为什么要投反对票?
Arrays.stream(numbers)
.distinct()
.boxed()
.collect(Collectors.toList());
Arrays.stream(numbers)
.distinct()
.toArray();
List<String> distinctElements = list.stream()
.distinct()
.boxed()
.collect(Collectors.toList());