为什么我不能使用 "String" 作为优先级队列的参数?

Why can't I use "String" as a parameter for a priority queue?

我正在尝试在处理 3 中实现 A* 算法,我决定使用优先级网格来存储可探索节点并确定其优先级。我刚刚决定做一个简单的测试来确保我知道语法,但是当我尝试将队列类型设置为 "String" 或 "Integer" 时,我得到错误 The type filename.PriorityQueue is not generic; it cannot be parameterized with arguments <String> Any为什么会这样?

import java.util.PriorityQueue;
import java.util.Comparator;

public class Test {
    public void main(String[] args) {
      PriorityQueue<String> pq= new PriorityQueue<String>(5,(a,b) -> a.length() - b.length());
    }
}

您是否从 java.util 导入了优先级队列? 如果不是那么:

import java.util.PriorityQueue;

您似乎有一个名为 filename.java 的文件,其中有一个名为 PriorityQueue 的类型,该类型不采用泛型。您很可能应该删除该文件,然后导入您想要的 PriorityQueue:

import java.util.PriorityQueue;

已解决。我非常愚蠢,不小心在同一个文件夹中创建了一个 PriorityQueue 文件。感谢您的快速回答。