【问题标题】:How to get n first values from an Iterator in Java 8?如何从 Java 8 中的迭代器中获取 n 个第一个值?
【发布时间】:2017-10-23 10:59:51
【问题描述】:

我使用Sort a Map<Key, Value> by values (Java)HashMap 进行了排序,我有一个LinkedHashMap,即保证迭代顺序的Iterable

现在,如果可能的话,我想使用 Java 8 集合流 API 技术检索地图的第一个 n 条目中的 java.util.List

我找到了how can i get two consecutive values from Iterator,它解释了可以使用数组来做到这一点,但这并不优雅,与我获得List 的意图不同(虽然可以转换,但这是一个不必要的步骤)和需要额外的方法。

【问题讨论】:

    标签: java java-8 java-stream


    【解决方案1】:

    流式传输entrySet 并将Stream 限制为第一个n 元素:

    List<Map.Entry<Key,Value>> firstN = 
        map.entrySet().stream().limit(n).collect(Collectors.toList());
    

    【讨论】:

      【解决方案2】:

      使用StreamEx编写更简洁的代码:

      List<Map.Entry<Key,Value>> firstN = EntryStream.of(map).limit(n).toList();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-23
        • 2012-09-25
        • 2016-07-24
        • 1970-01-01
        • 2021-04-14
        • 2011-03-26
        • 2012-10-17
        • 1970-01-01
        相关资源
        最近更新 更多