Java 整数排序方法的比较

Java 整数排序方法的比较,java,arrays,sorting,command-line-arguments,compareto,Java,Arrays,Sorting,Command Line Arguments,Compareto,我很难为我的程序创建compareTo()方法。我的程序从命令行读取5对字符串/整数。它们将表示Person对象的名称和年龄 例如,我的命令行参数是:Asia 19 Java 20 Html 25 CSS 18 Ruby 10 我的目标是在一个对话框中显示它们,从最小的数字重新排列到最大的数字 *我需要帮助的问题是compareTo()方法。在这一点上我有点被卡住了,因为我认为我不理解使用这种方法的概念。如果有人能给我一个信息丰富的解释,那就太棒了! 我的代码: Compariable允许您对P

我很难为我的程序创建compareTo()方法。我的程序从命令行读取5对字符串/整数。它们将表示Person对象的名称和年龄

例如,我的命令行参数是:Asia 19 Java 20 Html 25 CSS 18 Ruby 10

我的目标是在一个对话框中显示它们,从最小的数字重新排列到最大的数字

*我需要帮助的问题是compareTo()方法。在这一点上我有点被卡住了,因为我认为我不理解使用这种方法的概念。如果有人能给我一个信息丰富的解释,那就太棒了! 我的代码:


Compariable
允许您对
Person
对象进行排序,这些对象位于容器对象中,如
列表
数组


我建议查看和类以了解如何执行此操作。

Compariable使您能够对
Person
对象进行排序,这些对象位于容器对象(如
列表
数组
中)

我建议查看和类以了解如何执行此操作。

用于
compareTo(objectobj)
方法的契约要求您返回:

  • n<0如果
    被视为小于
    obj
  • 如果
    等于
    obj
  • 如果
    大于
    obj
通过这种方式,您可以为类定义排序行为

Arrays.sort(people);
请注意,只需反转返回值的符号,即可向后排序对象

作为补充说明,某些排序方法允许您将
比较器
与要排序的集合一起传递,这使您能够定义不同于默认排序标准的排序标准

Arrays.sort(people, new Comparator<Person>() { ... });
Arrays.sort(people,newcomparator(){…});
比较(对象obj)方法的合同要求您返回:

  • n<0如果
    被视为小于
    obj
  • 如果
    等于
    obj
  • 如果
    大于
    obj
通过这种方式,您可以为类定义排序行为

Arrays.sort(people);
请注意,只需反转返回值的符号,即可向后排序对象

作为补充说明,某些排序方法允许您将
比较器
与要排序的集合一起传递,这使您能够定义不同于默认排序标准的排序标准

Arrays.sort(people, new Comparator<Person>() { ... });
Arrays.sort(people,newcomparator(){…});

您的代码将无法编译,因为您将对象用作人。你需要投下它:

public int compareTo(Object object) throws ClassCastException{
    return age - ((Person)object).age;
}

您只需要一行代码,就可以直接访问字段。

您的代码无法编译,因为您将对象用作人。你需要投下它:

public int compareTo(Object object) throws ClassCastException{
    return age - ((Person)object).age;
}

您只需要一行代码,就可以直接访问字段。

与OP在其
compareTo()
方法中所做的有什么区别?OP要求解释
compareTo
方法的用途,而不是用于不同的实现您的第一句话是假的。是吗?你能解释一下原因吗?
compareTo
的合同不要求你返回-1、0或1。OP在他的
compareTo()
方法中所做的有什么不同?OP要求解释
compareTo
方法的用途,而不是用于不同的实现。你的第一句话是假的。是吗?你能解释一下为什么吗?
compareTo
的合同不要求你返回-1、0或1。我知道,这就是我的回答中所说的。我知道,这就是我的回答中所说的。嗯,我有点明白你在那里做了什么。它看起来有点像递归方法,至少是return语句。所以,对于你的样本,它将返回年龄减去比较对象的年龄,对吗?嗯,我有点明白你在那里做了什么。它看起来有点像递归方法,至少是return语句。因此,对于您的示例,它将返回年龄减去比较对象的年龄,对吗?