java - 调试 Java 泛型比较器

标签 java generics

class MyComparator<K,V> implements Comparator<Map.Entry<K,List<V>>> {

    public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {

                V v1 = me1.getValue();
                V v2 = me2.getValue();

                if(v1.size() > v2.size())
                    return 1;
                else if(v1.size() < v2.size())
                    return -1;
                else
                     return 0;
    }
}

需要帮助。

错误:

    javacode$ javac -Xdiags:verbose Anagrams1.java
    Anagrams1.java:6: error: > expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                   ^
    Anagrams1.java:6: error: '(' expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                         ^
    Anagrams1.java:6: error: > expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                ^
    Anagrams1.java:6: error: < expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                 ^
    Anagrams1.java:6: error: illegal start of expression
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                  ^
    Anagrams1.java:6: error: <identifier> expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                     ^
    Anagrams1.java:6: error: '(' expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                          ^
    Anagrams1.java:6: error: illegal start of type
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                                 ^
    Anagrams1.java:6: error: ';' expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                                     ^
    Anagrams1.java:6: error: ';' expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                                                               ^
    Anagrams1.java:6: error: ';' expected
        public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {
                                                                                                    ^
    11 errors

最佳答案

改变

public <Map.Entry<K,List<V>>> int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2)

public int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2)

不应在类声明和方法声明中都指定类型参数。

方法本身应该是:

public int compare(Map.Entry<K,List<V>> me1, Map.Entry<K,List<V>> me2) {

    List<V> v1 = me1.getValue(); // changed here
    List<V> v2 = me2.getValue(); // changed here

    if(v1.size() > v2.size())
        return 1;
    else if(v1.size() < v2.size())
        return -1;
    else
        return 0;
}

因为您正在比较两个 Map.Entry<K,List<V>>实例,而不是 Map.Entry<K,V> .

关于java - 调试 Java 泛型比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31096623/

相关文章:

java - 从 Solr 获取数据到 JTable

java - Android Studio : Buildtools 24. 0.1 需要 Java 1.8 或更高版本。

java - 在 Android 中运行方法时显示加载对话框?

generics - 使用 AsRef 返回包含在输入包装器类型中的引用

generics - Kotlin泛型和TypeVariable

Java generics - 通配符的目的除了下限?

c# - 返回或继承包含嵌套类的泛型

java - 在不同范围内提供相同类型的 Guice 提供程序 - 循环依赖

java - Spring 安全 :java. lang.NoClassDefFoundError: org/springframework/security/context/DelegatingApplicationListener

java - Tomcat 从 {$catalina_home}/(app instance)/lib 加载 JDBC 连接器 jar 但如果在项目 pom 中则不会