Java_容器_Collection_Comparable接口

所有可以排序的类都实现了java.lang.Comparable接口,Comparable接口只有一个方法:
public int comparaTo(Object obj):

  • 返回0,表示this == obj;
  • 返回正数,表示this > obj;
  • 返回负数,表示this < obj

实现了Comparable接口的类通过实现了comparaTo方法从而确定该类对象的排序方式。

示例,定义一个Name类,要求可以对其根据名字进行比较大小和排序。在调用Collections对象的sort(Object o)方法时,会默认调用Comparable接口的compareTo()方法进行大小比较,因此我们自定义的Name类需要重写compareTo()方法:

package javastudy;

import java.lang.Comparable;
import java.util.*;

public class Name implements Comparable{
    String firstName;
    String lastName;

    Name(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public int compareTo(Object obj) {
        Name name = (Name) obj;

        if(this.firstName.compareTo(name.firstName) == 0) {
            return this.lastName.compareTo(name.lastName);
        } else {
            return this.firstName.compareTo(name.firstName);
        }

    }

    public String toString() {
        return this.firstName + "." + this.lastName;
    }

    public static void main(String[] args) {
        List list = new ArrayList();

        Name name1 = new Name("Lily", "Li");
        Name name2 = new Name("Jessica", "Su");
        Name name3 = new Name("Jessica", "Wan");
        Name name4 = new Name("Jack", "Liu");
        Name name5 = new Name("Tom", "Xu");
        Name name6 = new Name("Kumara", "Wen");
        Name name7 = new Name("Jessica", "Li");
        list.add(name1);
        list.add(name2);
        list.add(name3);
        list.add(name4);
        list.add(name5);
        list.add(name6);
        list.add(name7);

        Collections.sort(list);
        System.out.println(list);
    }
}

Output: [Jack.Liu, Jessica.Li, Jessica.Su, Jessica.Wan, Kumara.Wen, Lily.Li, Tom.Xu]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值