java - 如何将 Stream 的元素收集到 Queue 中?

标签 java lambda java-8 queue java-stream

<分区>

我有以下代码:

Queue<Reward> possibleRewards = 
    Stream.of(Reward.values())
          .flatMap(reward -> IntStream.range(0, reward.getOccurencies()).mapToObj(i -> reward))
          .collect(Collectors.toList());

如您所见,我需要将 Stream 的元素收集到 Queue 中,而不是 List。但是,没有 Collectors.toQueue() 方法。如何将元素收集到 Queue 中?

最佳答案

您可以使用 Collectors.toCollection(),它允许您选择您希望生成的任何 Collection 实现:

Queue<Reward> possibleRewards = 
    Stream.of(Reward.values())
          .flatMap(reward -> IntStream.range(0, reward.getOccurencies()).mapToObj(i -> reward))
          .collect(Collectors.toCollection(PriorityQueue::new)); // use whatever Queue 
                                                                 // implementation you want

关于java - 如何将 Stream 的元素收集到 Queue 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886853/

相关文章:

c# - 从 Func<bool, T> 或类似的 lambda 中提取信息

c# - 定义一个将通用操作作为参数的通用操作

java - Android:谷歌地图虽然已初始化但为空

java - 为什么位或操作会导致符号扩展而位却不会?

java - 线程 "main"java.lang.NoClassDefFoundError : org/junit/Assume$AssumptionViolatedException 中的异常

java - 从集合/数组/列表创建逗号分隔字符串的最复杂方法?

javascript - JavaScript 变量存储在哪里?

java-8 - 在Java8中将Map <String,String>转换为List <Object>

java - 如何在 java 8 lambda 表达式中获取方法参数名称?

java - 使用 ubuntu 镜像在 dockerfile 中安装 JDK 8 update 172