建议10:必须知道如何实现类比较器 接口实现对象排序

建议10:必须知道如何实现类比较器

所谓的比较器就只是一个接口,也只需要实现一个方法(public int CompareTo(object
obj)).实现了比较器有什么用呢?除了顾名思义的可以比较两个实例的大小.还可以用来排序(比如是List集合,就直接调用.Sort()方法就可以
了.方便至极.定义Salay class:


public class Salary : IComparable<Salary>
{
public int RMB { get; set; }

public int CompareTo(Salary obj)
{
if (this.RMB > obj.RMB)
{
return 1;
}
else if (this.RMB == obj.RMB)
{
return 0;
}
else
{
return -1;
}
}
}

调用:


List<Salary> salarys = new List<Salary>();
for (int i = 0; i < 5; i++)
{
Salary salary = new Salary() {RMB=100*i };
salarys.Add(salary);
}
salarys.Sort();
foreach (var item in salarys)
{
Console.WriteLine(item.RMB);
}

排序就变成如此简单.

建议10:必须知道如何实现类比较器 接口实现对象排序,布布扣,bubuko.com

时间: 2024-10-02 23:53:52

建议10:必须知道如何实现类比较器 接口实现对象排序的相关文章

Comparator与Comparable,自定义排序和类比较器,TreeSet对象排序

/** * 学生类 * @author Administrator * */ public class Student { private String sno ; private String sname ; private Integer score ; public Student(String sno, String sname, Integer score) { super(); this.sno = sno; this.sname = sname; this.score = scor

Java泛型:泛型的定义(类、接口、对象)、使用、继承

地址   http://blog.csdn.net/lirx_tech/article/details/51570138 1. 设计泛型的初衷: 1) 主要是为了解决Java容器无法记忆元素类型的问题: i. 由于Java设计之初并不知道会往容器中存放什么类型的元素,因此元素类型都设定为Object,这样就什么东西都能放了! ii. 但是这样设计有明显的缺点: a. 取出元素的时候必须进行强制类型转换(尽管集合在运行时里面元素的"运行时类型"不变,即元素的getClass返回的还是最初

编写高质量代码改善C#程序的157个建议——建议10: 创建对象时需要考虑是否实现比较器

建议10: 创建对象时需要考虑是否实现比较器 有对象的地方就会存在比较,在.NET的世界中也一样.举个最简单的例子,在UI中,有一个10个人的Salary列表.根据排序的需要,列表要支持针对基本工资来罗列Salary.这个时候,接口IComparable就会起作用,代码如下所示: class Salary : IComparable { public string Name { get; set; } public int BaseSalary { get; set; } public int

读改善c#代码157个建议:建议10~11

目录: 建议10:创建对象时需要考虑是否实现比较器 建议11:区别对待==与Equals 一.建议10:创建对象时需要考虑是否实现比较器 比较一下基本工资: class Salary : IComparable { public string Name { get; set; } public decimal BaseSalary { get; set; } public decimal Bonus { get; set; } public int CompareTo(object obj) {

Java——类比较器

1.Product类 1 public class Product 2 { 3 private int pid; 4 private String name; 5 private double price; 6 7 public Product() 8 { 9 // TODO Auto-generated constructor stub 10 } 11 12 public Product(int pid, String name, double price) 13 { 14 this.pid

编写高质量代码改善C#程序的157个建议——建议109:谨慎使用嵌套类

建议109:谨慎使用嵌套类 使用嵌套类的原则是:当某类型需要访问另一个类型的私有成员时,才将它实现为嵌套类.一个典型的例子是在实现集合时,要为集合实现迭代器,这时用到了嵌套类.代码如下所示: public class ArrayList : IList, ICollection, IEnumerable, ICloneable { //省略 public virtual IEnumerator GetEnumerator() { return new ArrayListEnumeratorSim

背水一战 Windows 10 (122) - 其它: 通过 Windows.System.Profile 命名空间下的类获取信息, 查找指定类或接口的所在程序集的所有子类和子接口

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 其它 通过 Windows.System.Profile 命名空间下的类获取信息 查找指定类或接口的所在程序集的所有子类和子接口 示例1.演示如何通过 Windows.System.Profile 命名空间下的类获取信息Information/ProfileInfo.xaml <Page x:Class="Windows10.Information.ProfileInfo" xmlns="htt

java常用类——比较器

Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较逻辑.可以把Comparable理解为内部比较器,而Comparator是外部比较器,基本的写法如下: class Apple implements Comparable<Apple>{ int id; double price; public Apple(int id, double price

数据结构-List接口-LinkedList类-Set接口-HashSet类-Collection总结

一.数据结构:4种--<需补充> 1.堆栈结构:     特点:LIFO(后进先出);栈的入口/出口都在顶端位置;压栈就是存元素/弹栈就是取元素;     代表类:Stack;     其它:main方法最后一个出去; 2.数组结构:     特点:一片连续的空间;有索引,查找快;增删慢;     代表类:ArrayList;     应用场景:用于查询多的场景,如天气预报; 3.队列结构:     特点:FIFO(先进先出);入口/出口在两侧;     代表:Queue接口     应用场景