假设现在有一个学生类

 class Student
{
int age;
public Student(int age)
{
this.age = age;
}
}

要使学生类之间能进行比较,实现System.IComparable接口的CompareTo方法

 class Student : System.IComparable
{
int age;
public Student(int age)
{
this.age = age;
}
public int CompareTo(object obj)
{
Student stu = (Student)obj;
if (this.age > stu.age)
return ;
else if (this.age == stu.age)
return ;
else
return -;
}
}

这样即可以比较两个类

             Student xiaomin = new Student();
Student xiaohong = new Student();
if (xiaomin.CompareTo(xiaohong) > )
Console.WriteLine("小明比小红大");
else
Console.WriteLine("小明不比小红大");

研究一下System.IComparable接口,就会发现它的参数被定义成一个object。
然而这种方式不是类型安全的,
因为可能传进去的不是Student类型,就出报错
为了确保类型安全,应使用System.命名空间中定义的泛型
IComparable<T>接口,它定义了以下方法:
int CompareTo(T other);
方法获取的是类型参数T,而不是object, 所有安全得多

 class Student : System.IComparable<Student>
{
int age;
public Student(int age)
{
this.age = age;
} public int CompareTo(Student stu)
{
if (this.age > stu.age)
return ;
else if (this.age == stu.age)
return ;
else
return -;
}
}

通过实现System.IComparable接口的CompareTo方法对两个类进行比较的更多相关文章

  1. TreeSet集合的自然排序与比较器排序、Comparable接口的compareTo()方法

    [自然排序] package com.hxl; public class Student implements Comparable<Student> { private String n ...

  2. Java String.compareTo()方法

    描述:java.lang.String.compareTo() 方法比较两个字符串的字典. 比较是基于字符串中的每个字符的Unicode值.此String对象表示的字符序列的 参数字符串表示的字符序列 ...

  3. 『Java』接口的使用方法

    以下三个文件存在于同一个包下: 定义接口Dome_Interface.java: package cn.xxmmqg.Interface; // 接口不能直接使用,必须有一个"实现类&quo ...

  4. Java compareTo() 方法(转载)

    Java compareTo() 方法 compareTo() 方法用于两种方式的比较: 字符串与对象进行比较. 按字典顺序比较两个字符串. 语法: int compareTo(Object o)// ...

  5. java中两字符串比较--compareTo方法

    java.lang.String.compareTo() 方法比较两个字符串的字典,比较是基于字符串中的每个字符的Unicode值 String n1 = "1"; String ...

  6. eclipse中根据方法找到其实现类

    面向接口编程中,程序全是面向接口变成调用,在维护别人写的系统的时候怎么样快速定位当前根据接口调用的方法是哪个实体类实现的: Ctrl + T/f4(光标放在需要查看的方法上,然后按Ctrl+T或者F4 ...

  7. C# IComparable接口、IComparer接口和CompareTo(Object x)方法、Compare()方法

    在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异.比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口 ...

  8. TreeSet——实现Comparable接口并重写CompareTo()方法

    TreeSet是以自然顺序存的数据,例如 Set<Student> students=new TreeSet(); students.add(new Student("111&q ...

  9. Java自定义排序:继承Comparable接口,重写compareTo方法(排序规则)

    代码: 1 import java.util.*; 2 3 /** 4 * 学习自定义排序:继承Comparable接口,重写compareTo方法(排序规则). 5 * TreeMap容器的Key是 ...

随机推荐

  1. Three.js制作360度全景图

    这是个基于three.js的插件,预览地址:戳这里 使用方法: 1.这个插件的用法很简单,引入如下2个js <script src="js/three.min.js"> ...

  2. TileJSON

    TileJSON TileJSON is an open standard for representing map metadata. License The text of this specif ...

  3. Animation

    Animation 效果 用法 1.非常简单,导入两个文件(UIView+SetRect) (UIView+ImageEffects) 源码 github源码:https://github.com/m ...

  4. iOS App 不支持http协议 App Transport Security has blocked a cleartext HTTP (http://)

    目前iOS已经不支持http协议了,不过可以通过info.plist设置允许 App Transport Security has blocked a cleartext HTTP (http://) ...

  5. 如何做好一个Sprint Demo

    我列出了一些关于如何做好一个Demo(演示)的建议.我想通过以下四个步骤可以做出一个较好的Demo. 第一步:准备Demo故事 以真实用户使用软件的方式进行Demo.关键点不在于演示软件如何工作,而是 ...

  6. 从Sql Server表中随机获取一些记录最简单的方法

    * FROM test ORDER BY NewID() 注意,使用时,请将‘test’改为真实的表名.

  7. uva 129 krypton factors ——yhx

     Krypton Factor  You have been employed by the organisers of a Super Krypton Factor Contest in which ...

  8. python学习3

    这部分学习python函数的写法: 在写python函数之前,首先看一下python中已经写好的函数,就像C中的<math>中的那些函数一样的东西有哪些:网址为https://docs.p ...

  9. IE6读取不到样式文件bug

    早年的东东,贴出来充一下数吧~ 问题描述 在一个弹层优化需求中,完成了修改后,刷一下其他(除IE6外)浏览器,很给力,展现都一个样: 再刷下IE6,傻眼了: 初步分析 IE6问题多我知道,不过像这样的 ...

  10. [LeetCode] Palindrome Pairs 回文对

    Given a list of unique words. Find all pairs of distinct indices (i, j) in the given list, so that t ...