接口——Comparable

原创
2020/03/11 04:33
阅读数 0

Comparable是排序接口。如果一个类实现Comparable接口,那么该类就支持 排序。实现了Comparable接口的类的对象的列表或数组可以通过Collections.sort或 Arrays.sort进行自动排序。

此外,实现此接口的对象可以用作有序映射中的键或有序集合中的集合,无需指 定比较器。

此接口只有一个方法compare,


package java.lang;

public interface Comparable<T> {
    int compareTo(T var1);
}


比较此对象与指定对象的顺序,如果该对象小 于、等于或大于指定对象,则分别返回负整数、零或正整数。


import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;

class User implements Comparable {
    private String Name;
    private int age;

    public User(String name, int age) {
        Name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "Name='" + Name + '\'' +
                ", age=" + age +
                '}';
    }

    // 根据年龄排序,如果年龄一样 根据姓名排序
    public int compareTo(Object o) {
        User u = (User) o;
        if (this.age != u.age) {
            return this.age - u.age;// 升序排列
        } else {
            return this.Name.compareTo(u.Name);
        }
    }
}

public class comparable {
    public static void main(String[] args) {
        ArrayList<User> list = new ArrayList<User>();
        list.add(new User("张三", 20));
        list.add(new User("李四", 30));
        list.add(new User("王五", 20));
        list.add(new User("赵六", 18));
        list.add(new User("孙七", 25));
        list.add(new User("周八", 30));
        Collections.sort(list);
        Iterator<User> iterator = list.iterator();
        while (iterator.hasNext()) {
            User user = iterator.next();
            System.out.println(user);
        }
    }
}

打印结果



本文同步分享在 博客“羊羽”(other)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享

作者的其它热门文章

加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部