【问题标题】:compare objects doesnt work比较对象不起作用
【发布时间】:2017-04-18 17:58:05
【问题描述】:

我正在尝试比较我自己的 Person 类的对象名称,以便对 ArrayList 进行排序。我按照老师的做法做了,但似乎不明白为什么它不起作用。

import java.util.*;

public class SortName implements Comparable<Person>{
    public int compare(Person p1, Person p2){
        return p1.getName().compareTo(p2.getName());
    }
}

【问题讨论】:

  • 输出是什么?你有什么错误吗?

标签: java oop compare


【解决方案1】:

应该是Comparator接口。 Comparator 接口有compare() 方法而不是Comparable

public class SortName implements Comparator<Person>

【讨论】:

    【解决方案2】:

    compare() 方法是正确的,但是你使用了错误的接口。实现 Comparator,而不是 Comparable。它们很容易混淆。

    import java.util.*;
    
    public class SortName implements Comparator<Person>{
        public int compare(Person p1, Person p2){
            return p1.getName().compareTo(p2.getName());
        }
    }
    

    【讨论】:

      【解决方案3】:

      参考What is the difference between compare() and compareTo()?

      Comparator 接口让你覆盖它的int compare(Object o1, Object o2) 方法。
      实现此接口可帮助您对内置数据结构甚至自定义数据数据结构进行排序。

      Comparable 接口允许您覆盖其int compareTo(Object o) 方法。
      示例:(x.compareTo(y)==0) == (x.equals(y))

      【讨论】:

        【解决方案4】:

        你可以用compareTo()方法试试:

        import java.util.*;
        
        public class SortName implements Comparable<Person>{
            public int compareTo(Person p2){
                return this.getName().compareTo(p2.getName());
            }
        }
        

        【讨论】:

        • 不正确。 Comparable 的 compareTo() 方法确实接受两个参数,它的 compareTo(Object obj)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-11
        • 2021-08-05
        • 1970-01-01
        • 2011-10-29
        • 2013-11-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多