`
lovesailing
  • 浏览: 36559 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

java中comparable接口

    博客分类:
  • java
阅读更多
 //一个实现了Comparable接口的类在一个Collection(集合)里是可以排序的,
//而排序的规则是按照你实现的Comparable里的抽象方法compareTo(Object o) 方法来决定的。 

import java.util.Arrays;

//实现Comparable接口,使该类的对象可排序
@SuppressWarnings("unchecked")

public class TestComparable implements Comparable {

    // 该类的属性i
    private double i = Math.random();

    // 实现Comparable接口的抽象方法,定义排序规则
    public int compareTo(Object o) {
        // 定义排序规则: TestComparable对象里的属性i大的则排序时比较"大"(排序靠后)
        if (o instanceof TestComparable) {
            if (i > ((TestComparable) o).i) {
                return 1;
            } else if(i < ((TestComparable) o).i){
                return -1;
            } else{
                return 0;
            }
        } else {
            // 非TestComparable对象与之比较,则抛出异常
            throw new ClassCastException("Can't compare");
        }
    }

    // 重载toString方法定义输出
    public String toString() {
        return "" + i;
    }

    // 测试
    public static void main(String[] args) {
        // 建立一个数组, 元素为3个TestComparable对象
        TestComparable[] c = new TestComparable[] { new TestComparable(),
                new TestComparable(), new TestComparable() };
        // 排序前
        System.out.println(Arrays.asList(c));
        // 排序
        Arrays.sort(c);
        // 排序后
        System.out.println(Arrays.asList(c));
    }
}
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics