使用Java8流实现此集合的最佳方法

使用Java8流实现此集合的最佳方法,java,java-8,java-stream,collectors,Java,Java 8,Java Stream,Collectors,我需要的是所有EnumVals.getValues()的唯一组合列表 我做了如下操作,但它抛出了错误: String[] allVals = {"a","b","c","d","e"} 您需要使用来展平阵列。此外,您可以在流上使用,而不是收集到哈希集中 Stream.of(EnumVals.values()).map(w->w.getValues()).collect(Collectors.toCollection(HashSet::new)).toArray(new String[0]

我需要的是所有EnumVals.getValues()的唯一组合列表

我做了如下操作,但它抛出了错误:

String[] allVals = {"a","b","c","d","e"}
您需要使用来展平阵列。此外,您可以在流上使用,而不是收集到
哈希集中

Stream.of(EnumVals.values()).map(w->w.getValues()).collect(Collectors.toCollection(HashSet::new)).toArray(new String[0]);
注意瓦拉格人的存在。它们可以极大地简化代码,就像您问题中的代码一样…
Stream.of(EnumVals.values()).map(w->w.getValues()).collect(Collectors.toCollection(HashSet::new)).toArray(new String[0]);
Arrays.stream(EnumVals.values())
    .map(EnumVals::getValues)
    .flatMap(Arrays::stream)
    .distinct()
    .toArray(String[]::new);