我有两个类Person和Employee的对象。这两个类都有一个共同的属性age。我已经将这两个类的一些对象添加到ArrayList中,现在我想编写一个比较器并将其传递给Collections类的sort方法。并希望列表按照年龄排序。我尝试这样做只是为了更清楚地了解Java中Comparable和Comparator的用法。
编辑: 我提出这个问题的原因是我对Comparator和Comparable不太清楚。我在某个地方读到,如果一个类实现了Comparable,则不能与其他类的对象进行比较(因为会出现类转换异常)。现在,如果我在Employee和Person之间创建关系,则不需要实现Comparator(除非我想根据这些类的名称或其他公共属性进行排序)。我再次提出这个问题是为了更清楚地了解Comparator和Comparable。
到目前为止,我所能理解的是,如果我想在多个参数上进行排序,则应该实现Comparator并将其传递给Collections.sort()。或者,如果我无法控制要排序的对象的类,则应该实现自定义排序的Comparator。(如果我错了或者我漏掉了什么,请纠正我)
编辑 我现在认为我理解了Comparable和Comparator的用法。为了确保我掌握了正确的概念,这里是我理解的内容:如果我想比较两个不同类(并且没有关系)的对象,则应使用原始比较器并覆盖compare方法。另一个实现Comparator而不是Comparable的原因是具有排序的灵活性。从自然排序中我所理解的是CompareTo方法中类实现的逻辑。
希望我对所有这些观点的理解都是正确的。
编辑: 我提出这个问题的原因是我对Comparator和Comparable不太清楚。我在某个地方读到,如果一个类实现了Comparable,则不能与其他类的对象进行比较(因为会出现类转换异常)。现在,如果我在Employee和Person之间创建关系,则不需要实现Comparator(除非我想根据这些类的名称或其他公共属性进行排序)。我再次提出这个问题是为了更清楚地了解Comparator和Comparable。
到目前为止,我所能理解的是,如果我想在多个参数上进行排序,则应该实现Comparator并将其传递给Collections.sort()。或者,如果我无法控制要排序的对象的类,则应该实现自定义排序的Comparator。(如果我错了或者我漏掉了什么,请纠正我)
编辑 我现在认为我理解了Comparable和Comparator的用法。为了确保我掌握了正确的概念,这里是我理解的内容:如果我想比较两个不同类(并且没有关系)的对象,则应使用原始比较器并覆盖compare方法。另一个实现Comparator而不是Comparable的原因是具有排序的灵活性。从自然排序中我所理解的是CompareTo方法中类实现的逻辑。
希望我对所有这些观点的理解都是正确的。