我正在尝试学习如何使用 PriorityQueue,因为我以前从未使用过。这是我在 LeetCode 上找到的一个正在使用的示例,用于解决在字符串数组中查找前 K 个元素的问题
public List<String> topKFrequent(String[] words, int k) {
Map<String, Integer> count = new HashMap();
for (String word: words) {
count.put(word, count.getOrDefault(word, 0) + 1);
}
PriorityQueue<String> heap = new PriorityQueue<String>(
(w1, w2) -> count.get(w1).equals(count.get(w2)) ?
w2.compareTo(w1) : count.get(w1) - count.get(w2) );
for (String word: count.keySet()) {
heap.offer(word);
if (heap.size() > k) heap.poll();
}
List<String> ans = new ArrayList();
while (!heap.isEmpty()) ans.add(heap.poll());
Collections.reverse(ans);
return ans;
}
Run Code Online (Sandbox Code Playgroud)
更值得注意的是,我想知道这条线在做什么:
PriorityQueue<String> heap = new PriorityQueue<String>(
(w1, w2) -> count.get(w1).equals(count.get(w2)) …Run Code Online (Sandbox Code Playgroud) 假设我的手机上有一个预先存在的 Android 应用程序,它的主屏幕上有一个我可以单击的按钮。我知道有一种方法可以从我正在创建的应用程序启动该应用程序,但是有没有一种方法可以自动单击该按钮?是否有我可以传入的参数,我将如何使用它?