1、接口中的方法并不实现具体功能,继承于该接口的类必须实现具体功能。

核心思想:对修改封闭,对扩展开放。

2、Sort()方法:

默认:Sort(内容)

英文:按照首字母顺序排序,首字母相同则看第二个字母;

数字:从小到大排序;

自定义 Sort(内容,排序规则)

内容按照自定义的规则排序。

host类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ConsoleEnum
{
class host
{
[STAThread]
static void Main(string[] args)
{
// 创建一个数组,里面放汽车名和年份
car[] arrayOfCars = new car[6]
{
new car("Ford",1992),
new car("Fiat",1988),
new car("Buick",1932),
new car("Ford",1932),
new car("Dodge",1999),
new car("Honda",1977)
}; Console.WriteLine("排序前\n");
foreach (car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year); Console.WriteLine("\Sort默认正向排序 \n");
Array.Sort(arrayOfCars);
foreach (car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year);
 Console.WriteLine("\Sort 按年份正向排序 )\n");
Array.Sort(arrayOfCars, car.sortYearAscending());
foreach (car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year); Console.WriteLine("\Sort 按汽车名正向排序 \n");
Array.Sort(arrayOfCars, car.sortMakeDescending());
foreach (car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year); Console.WriteLine("\Sort 按汽车名反向排序 \n");
Array.Sort(arrayOfCars, car.sortYearDescending());
foreach (car c in arrayOfCars)
Console.WriteLine(c.Make + "\t\t" + c.Year); Console.ReadLine();
}
}
}

  

Car类

using System;
using System.Collections;
namespace ConsoleEnum
{
public class car : IComparable
{
// 嵌套类:类中的类。 // 按年升序
private class sortYearAscendingHelper : IComparer
{
//实现接口定义的方法
int IComparer.Compare(object a, object b)
{
car c1 = (car)a;
car c2 = (car)b; if (c1.year > c2.year)
return 1; if (c1.year < c2.year)
return -1; else
return 0;
}
} // 按年降序
private class sortYearDescendingHelper : IComparer
{  //实现接口定义的方法
int IComparer.Compare(object a, object b)
{
car c1 = (car)a;
car c2 = (car)b; if (c1.year < c2.year)
return 1; if (c1.year > c2.year)
return -1; else
return 0;
}
} // 按汽车名字母降序
private class sortMakeDescendingHelper : IComparer
{  //实现接口定义的方法
int IComparer.Compare(object a, object b)
{
car c1 = (car)a;
car c2 = (car)b; return String.Compare(c2.make, c1.make);
}
} private int year;
private string make; //构造函数
public car(string Make, int Year)
{
make = Make;
year = Year;
} //属性
public int Year
{
get { return year; }
set { year = value; }
} public string Make
{
get { return make; }
set { make = value; }
} // 实现IComparable接口来提供默认的排序顺序的对比。
public int IComparable.CompareTo(object obj)
{
car c = (car)obj;
        //调用了C#中封装的类,详情见下一篇
return String.Compare(this.make, c.make);
}      //因为这里使用了嵌套类,把嵌套类包裹到方法中方便调用(类名.方法名)
public static IComparer sortYearAscending()
{
        //调用了上面的类
return (IComparer)new sortYearAscendingHelper();
} public static IComparer sortYearDescending()
{
        //调用了上面的类
return (IComparer)new sortYearDescendingHelper();
} public static IComparer sortMakeDescending()
{
        //调用了上面的类
return (IComparer)new sortMakeDescendingHelper();
} }
}

  

ICompare接口、Sort()方法的更多相关文章

  1. Array类的Sort()方法

    刚复习了Array类的sort()方法, 这里列举几个常用的,和大家一起分享. Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System. ...

  2. C# Array类的Sort()方法

    Array类实现了数组中元素的冒泡排序.Sort()方法要求数组中的元素实现IComparable接口.如System.Int32 和System.String实现了IComparable接口,所以下 ...

  3. ArrayList 排序Sort()方法扩展

    1.sort() sort可以直接对默认继承 IComparable接口的类进行排序,如:int.string.... ArrayList arrayList = new ArrayList(); , ...

  4. .NET中string[]数组和List<string>泛型的相互转换以及Array类的Sort()方法(转)

    从string[]转List<string>: " }; List<string> list = new List<string>(str); 从List ...

  5. 定制对ArrayList的sort方法的自定义排序

    java中的ArrayList需要通过collections类的sort方法来进行排序 如果想自定义排序方式则需要有类来实现Comparator接口并重写compare方法 调用sort方法时将Arr ...

  6. 用Java集合中的Collections.sort方法对list排序的两种方法

    用Collections.sort方法对list排序有两种方法第一种是list中的对象实现Comparable接口,如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  7. 关于Collections中的sort()方法总结

    用Java集合中的Collections.sort方法对list排序的两种方法 本文部分引用自:http://my.oschina.net/leoson/blog/131904 用Collection ...

  8. java中Collections.sort()方法实现集合排序

    1.Integer/String泛型的List进行排序 List <Integer> integerlist = new ArrayList<Integer>();   //定 ...

  9. java中的排序(自定义数据排序)--使用Collections的sort方法

    排序:将一组数据按相应的规则 排列 顺序 1.规则:       基本数据类型:日常的大小排序. 引用类型: 内置引用类型(String,Integer..),内部已经指定规则,直接使用即可.---- ...

  10. 009-jdk1.8版本新特性一-展方法,Lambda表达式,函数式接口、方法引用构造引用

    一.JDK1.8 名称:Spider(蜘蛛) 发布日期:2014-03-18 新特性: 1.1.扩展方法[接口的默认方法] Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 defaul ...

随机推荐

  1. c/c++ 函数、常量、指针和数组的关系梳理

    压力才有动力,15年中旬就要准备实习,学习复习学习复习学习复习学习复习……无限循环中,好记性不如烂笔头……从数组开始,为主干. c 的array由一系列的类型相同的元素构成,数组声明包括数组元素个数和 ...

  2. 1Z0-053 争议题目解析330

    1Z0-053 争议题目解析330 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 330.What will be the end result of this set of RM ...

  3. 【Java】子类的链式调用

    记录最近在项目设计中遇到的一个小问题. 前提:有这样两个POJO类,它们都可以通过链式调用的方式来设置其属性值,其中一个类继承了另一个类. 问题:通过链式调用,子类对象访问父类方法后,如何使返回对象仍 ...

  4. WPF透明设置(Opacity)

    <TextBlock Text="阴影效果" FontSize="32"></TextBlock> <Border Height= ...

  5. jQuery网页版五子棋小游戏源码下载

    体验效果:http://hovertree.com/texiao/game/4/ 网页五子棋源代码: <!DOCTYPE html> <html> <head> & ...

  6. 好的Ui界面地址

    http://121.40.148.178:8080/http://www.uimaker.com/http://www.uimaker.com/uimakerhtml/bshtml/124261.h ...

  7. 基于python编写的天气抓取程序

    以前一直使用中国天气网的天气预报组件都挺好,可是自从他们升级组件后数据加载变得非常不稳定,因为JS的阻塞常常导致网站打开速度很慢.为了解决这个问题决定现学现用python编写一个抓取程序,每天定时抓取 ...

  8. 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧

    [源码下载] 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧 作者:webabcd 介绍背水一战 Wind ...

  9. [moka同学笔记]八、Yii2.0课程笔记(魏曦老师教程)[授权]

    数据库表创建 在执行yii rbac/init之前,需要在 \console\controllers\RbacController.php中 <?php namespace console\co ...

  10. 【转】PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数

    原文地址: PHP 杂谈<重构-改善既有代码的设计>之一 重新组织你的函数 思维导图   点击下图,可以看大图.    介绍   我把我比较喜欢的和比较关注的地方写下来和大家分享.上次我写 ...