Part I
Comparable与Comparator接口不仅在串法上相似,而且他们的作用都十分的相似,他们可以让对象实现可排序。
首先让我们看看官方文档(JDK6.0 API)中对他们的描述:
public interface Comparable<T>
This interface imposes a total ordering on the objects of each class that implements it. This ordering is referred to as the class's natural ordering, and the class's compareTo method is referred to as its natural comparison method.
public interface Comparator<T>
A comparison function, which imposes a total ordering on some collection of objects. Comparators can be passed to a sort method (such asCollections.sort
or Arrays.sort
) to allow precise control over the sort order. Comparators can also be used to control the order of certain data structures (such as sorted sets
or sorted maps
), or to provide an ordering for collections of objects that don't have a natural ordering
.
从上描述可以知道,Comparable是让实体类去实现的,而实现了这个接口的实体类的本身就具备了对象间的可比较性。
而实现Comparator接口的类则是一个单纯可比较算法的实现。
Part II
下面是一个Person的实体类定义:
1: public class Person {
2:
3: private String name;
4: private int age;
5:
6: public String getName() {
7: return name;
8: }
9:
10: public void setName(String name) {
11: this.name = name;
12: }
13:
14: public int getAge() {
15: return age;
16: }
17:
18: public void setAge(int age) {
19: this.age = age;
20: }
21:
22: }
那如何让Person的对象根据name来实现对比呢?首先我们尝试一下在对象间直接使用逻辑运算符进行操作:
1: public class CompareTest {
2:
3: public static void main(String[] args) {
4: Person p1 = new Person();
5: p1.setName("P1");
6: p1.setAge(20);
7:
8: Person p2 = new Person();
9: p2.setName("P2");
10: p2.setAge(30);
11:
12: System.out.println(p1 > p2);
13: }
14:
15: }
结果如下:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator > is undefined for the argument type(s) Person, Person
at CompareTest.main(CompareTest.java:12)
看来直接用逻辑运算符是没办法判断两个对象大小,其实自己想想也知道,如果用逻辑运算符来判断两个对象的大小,那应该用对象的什么来作为判断条件呢?名字?年龄?hashCode值?内存地址?
分享到:
相关推荐
Comparable 接口和 Comparator 使用示例 在 Java 编程语言中,比较和排序是非常...Comparable 接口和 Comparator 都是 Java 中非常重要的比较和排序机制,它们提供了不同的比较和排序方式,分别适用于不同的应用场景。
Comparator接口与Comparable接口是Java语言中两个重要的接口,它们都是用于比较和排序自定义类的对象的大小的。虽然它们两个都是用于比较的接口,但是它们有着不同的实现方式和应用场景。 相同之处:Comparator接口...
在Java编程语言中,Comparable和Comparator接口是两个重要的概念,它们都用于对象的排序,但有着不同的使用场景和特点。本文将深入探讨这两个接口的区别,以及它们在实际开发中的应用。 首先,我们来了解一下...
在Java编程语言中,Comparable和Comparator接口用于对对象进行比较和排序。这两个接口在很多情况下都能派上用场,但它们的应用场景和实现方式有所不同。 首先,Comparable接口是排序接口,意味着一个类如果实现了...
在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...
在Java编程语言中,Comparable和Comparator接口是两个非常重要的组件,它们主要用来进行对象的比较和排序。了解它们之间的区别对于提升代码的可维护性和灵活性至关重要。 Comparable接口来源于java.lang包,它定义...
Java 中的 Comparable 和 Comparator 接口详解 Java 中的 Comparable 和 Comparator 接口都是用于比较和排序的,但是它们之间存在着一些关键的区别。Comparable 是一个排序接口,若一个类实现了 Comparable 接口,...
在Java编程语言中,Comparable和Comparator接口用于比较对象的顺序,尤其在进行排序操作时非常关键。两者虽然目的相似,但使用方式和应用场景有所区别。 Comparable接口定义在`java.lang`包中,它只有一个方法`...
Java Comparable和Comparator对比详解 Java 中的 Comparable 和 Comparator 是两个常用的接口,用于实现对象的比较和排序。它们都是 Java 中的接口,都是用于比较对象的大小的,但它们有所不同。 Comparable 接口 ...
Java Comparable及Comparator接口区别详解 Java 中的 Comparable 和 Comparator 接口都是用来比较对象大小的,但是它们之间有着非常重要的区别。 首先,让我们来了解一下 Comparable 接口。Comparable 接口位于 ...
Java 比较接口comparable与comparator区别解析 Java 语言中提供了两个比较接口: Comparable 和 Comparator,这两个接口都是用于比较对象的大小顺序的,但它们有着不同的使用场景和实现方式。在本文中,我们将详细...
在Java编程中,为了对自定义对象进行排序,Java提供了两种接口:`Comparable`与`Comparator`。这两种接口各有优势,适用于不同的场景。本文将深入探讨这两种接口的区别及其应用场景,帮助读者更好地理解它们的工作...
在Java编程语言中,Comparable和Comparator接口都用于比较对象,但它们之间存在一些关键区别,这对于理解和优化代码的可扩展性至关重要。 首先,Comparable接口是一个排序接口,它定义了一个单一的方法`compareTo(T...
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...
在Java编程语言中,`Comparable`接口和`Comparator`接口是两种重要的排序机制,它们用于对集合中的对象进行比较和排序。理解它们的区别对于任何Java开发者来说都是至关重要的。 首先,`Comparable`接口位于`java....
Java-中的-Comparator-和-Comparable.md
在 Java 中,Comparator 和 Comparable 是两个非常重要的接口,它们用于对象的排序操作。这两个接口都是在 java.util 包中定义的,主要用于定制排序规则。 **一、Comparator 接口** Comparator 接口允许我们创建...
在Java编程语言中,Comparable和Comparator是两个非常重要的接口,它们都用于对象的比较和排序。下面是关于这两个接口的详细解释: **Comparable接口** Comparable接口位于`java.lang`包下,它是一个对象自比较的...
Comparable接口和Comparator接口是Java中用于排序的关键组件,它们在数据结构如数组、集合和映射的排序过程中扮演着重要角色。接下来我们将深入探讨这两个接口的特性、用途以及它们之间的区别。 1. Comparable接口...