java - Java Streams() 与 Heap.poll() 的区别
问题描述
在解决 Leetcode 上的问题时,我在将堆元素转换为列表时使用方法 2 得到了错误的答案。其余的方法是相同的。两者有什么区别?我以前认为两者是一样的。
问题https://leetcode.com/problems/top-k-frequent-words/
解决方案1:
List<String> ans = new ArrayList();
while (!heap.isEmpty()) ans.add(heap.poll());
解决方案2:
List<String> ans = heap.stream().collect(Collectors.toList());
解决方案
这是一个常见的问题。参考这个。当您直接流式传输时,它使用该iterator()
方法,因此不会维持顺序。
您可以将您的线路更改为
List<String> ans = Stream.generate(heap::poll)
.limit(heap.size())
.collect(Collectors.toList());
推荐阅读
- python - 使用 REST API 批量上传到 Azure Data Lake Gen 2
- laravel - 如何在 Laravel 6 LazyCollection 中使用 orderBy?
- eclipse - 无法使用 Appium 在 Eclipse 中使用 Selenium 创建第一个程序
- java - 如何通过用户输入的字符值过滤数组列表
- render - 在 show-hint.js 中更改 codemirror 渲染功能
- python - 如果其他列不等于特定字符串,则 Pandas 更新列,否则什么都没有
- typescript - 我该如何开玩笑地测试这段代码?
- ios - 从 pdf 数据在 iOS 中显示 PDF
- python - 获取错误 7 参数列表太长而无法获得更多选项?
- javascript - 正则表达式匹配从字符串 _ JavaScript 返回第一个匹配