继承ArrayList类实现数组的自定义添加,排序等操作!

- -..星期六我朋友问我
 
把 字符串 "a,1|b,4|c,2" , "b,3|a,4|k,2" 合并输出成,相同合并,排序输出的问题...
 
因为懒写得乱七八糟的 也没测试 后来发现很 有问题 ,又认认真真再写了一次 ,测试OK!
 
写的过程中.我发现很多以前用过的东西都忘记怎么用了..懒真的不行啊...所以我决定写下来..纪录一下...
' 要求:把 字符串 "a,1|b,4|c,2" , "b,3|a,4|k,2" 合并输出成,相同合并,排序输出

    
' 写了数组类来处理这个问题
     Public   Class MyArray
        
'继承ArrayList
        Inherits ArrayList
        
'自定义个添加新元素的函数
        Public Sub AddObj(ByVal obj As MyObj)
            
Dim OldObj As MyObj = Nothing
            
For i As Integer = 0 To Me.Count - 1
                
If Me.Item(i).Name = obj.Name Then OldObj = Me.Item(i)
            
Next
            
If OldObj Is Nothing Then
                
Me.Add(obj)
            
Else
                OldObj.Value 
+= obj.Value
            
End If
        
End Sub

        
Public Function WriteObj() As String
            
Dim reStr As String = String.Empty
            
For Each Obj As MyObj In Me
                reStr 
+= Obj.Name & "," & Obj.Value
                
If Not Obj Is Me(Me.Count - 1Then reStr += "|"
            
Next
            
Return reStr
        
End Function

    
End Class

    
' 用于加入数组的对象
     Public   Class MyObj
        
Public Name As String '用来纪录名称(a,b,c什么的)
        Public Value As Integer '用来纪录值
        '构造函数
        Public Sub New(ByVal NewName As StringByVal NewValue As Integer)
            
Me.Name = NewName
            
Me.Value = NewValue
        
End Sub

    
End Class

    
' 排序接口
     Public   Class MyIComparer
        
Implements IComparer
        
'比较Name排序
        Private Function Compare(ByVal x As ObjectByVal y As ObjectAs Integer Implements IComparer.Compare
            
Return String.Compare(CType(x, MyObj).Name, CType(y, MyObj).Name)
        
End Function

    
End Class

    
' 准备工作结束
     ' 现在我门有MyObj:纪录对象,MyArray:处理对象数组,MyIComparer:排序接口
     ' 以下简单用法
     Public   Sub AddArry(ByVal Arry As MyArray, ByVal Str As String)
        
Dim StrArry() As String = Split(Str"|")
        
For Each aStr As String In StrArry
            
Dim aStrArry() As String = Split(aStr, ",")
            
Dim obj As New MyObj(aStrArry(0), aStrArry(1))
            Arry.AddObj(obj)
        
Next
    
End Sub


    
Public   Function Test() As String
        
Dim Str1 As String = "a,1|b,4|c,2"
        
Dim Str2 As String = "b,3|a,4|k,2"
        
Dim Arry As New MyArray
        
Dim ICom As New MyIComparer
        
Me.AddArry(Arry, Str1)
        
Me.AddArry(Arry, Str2)
        Arry.Sort(ICom)
        
Return Arry.WriteObj
    
End Function


 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值