VB.Net程序设计:IComparer的应用,按两个不同类的某个属性比较排序
来源:互联网 发布:卓越团队淘宝 编辑:程序博客网 时间:2024/05/22 15:25
比较方法:两个不同的类,其中有一个属性是相同类型的,如日期,或者字符。
自定义IComparer,实现比较方法。
Imports System.RuntimeImports System.CollectionsPublic Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click Dim ArList As New ArrayList With ArList .Add(New Duty(Date.Now, "now")) .Add(New DutyTemp(Date.Today, "today")) .Add(New Duty(Date.Today.AddHours(1), "today+1h")) .Add(New DutyTemp(Date.Today.AddDays(1), "today-1day")) .Add(New Duty(Date.Today.AddHours(-1), "today-1h")) .Add(New Duty(Date.Today.AddDays(5), "today-5day")) .Add(New DutyTemp(Date.Today.AddDays(-8), "today-8day")) End With ArList.Sort(New DutyComparer) For Each obj As Object In ArList Debug.Print(obj.ToString) Next End SubEnd ClassPublic Class DutyComparer Implements IComparer Public Function Compare(x As Object, y As Object) As Integer Implements System.Collections.IComparer.Compare Dim dtm1, dtm2 As Date Select Case x.GetType Case GetType(Duty) dtm1 = CType(x, Duty).DateFrom Case GetType(DutyTemp) dtm1 = CType(x, DutyTemp).TimeFrom End Select Select Case y.GetType Case GetType(Duty) dtm2 = CType(y, Duty).DateFrom Case GetType(DutyTemp) dtm2 = CType(y, DutyTemp).TimeFrom End Select Return Date.Compare(dtm1, dtm2) End FunctionEnd Class'--如果兩個不同類可以抽象處理,實現相同接口,就比較容易點。Public Class Duty Property DateFrom As Date Property DutyName As String Sub New(dtmFrom As Date, strName As String) DateFrom = dtmFrom DutyName = strName End Sub Public Overrides Function ToString() As String Return String.Format("{0}-{1}", DateFrom.ToString, DutyName) End FunctionEnd ClassPublic Class DutyTemp Property TimeFrom As Date Property DutyTempName As String Sub New(dtmFrom As Date, strName As String) TimeFrom = dtmFrom DutyTempName = strName End Sub Public Overrides Function ToString() As String Return String.Format("{0}-{1}", TimeFrom.ToString, DutyTempName) End FunctionEnd Class
对比结果:
0 0
- VB.Net程序设计:IComparer的应用,按两个不同类的某个属性比较排序
- 复制两个不同类的对象的属性
- 复制两个不同类的对象的属性
- 复制两个不同类的对象的属性
- Java中复制两个不同类的对象的属性
- VB.Net程序设计:ListBox拖动排序两个ListBox的操作
- ArrayList 的 IComparer排序
- IComparer(Of T) 接口的实现 (vb.net)
- C++两个不同类之间,友元函数的简单应用。
- 对象的比较与排序:IComparable和IComparer接口
- 对象的比较与排序:IComparable和IComparer接口
- vb.net中自定义属性的应用
- C++两个不同类成员之间的调用
- Java集合按照对象的某个属性进行比较排序
- Vb.Net程序设计:不带事件参数的事件。
- 实现 ArrayList 的 IComparer排序
- 使用Emit Mapper自动映射不同类的属性值
- 反射应用:比较两个对象属性的不同
- MFC 消息机制 AfxWndProc->AfxCallWndProc->WindowProc->OnWndMsg
- MySQL 里设置或修改系统变量的几种方法
- 12.5一个无聊的姓名生成
- Java正则表达式之语法规则
- Sublime Text 2 快捷键 —— Win版
- VB.Net程序设计:IComparer的应用,按两个不同类的某个属性比较排序
- Feature Service(二)Silverlight API在线编辑
- Singers
- C语言的指针长度
- [Leetcode] Remove Element (Java)
- android 将图片内容解析成字节数组,将字节数组转换为ImageView可调用的Bitmap对象,图片缩放,把字节数组保存为一个文件,把Bitmap转Byte
- weblogic中获取上传文件的路径
- arch/alpha/include/asm/posix_types.h
- Ubuntu HTML5