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

本文介绍了一种使用自定义数组类处理字符串合并的方法。通过创建MyArrayClass类来合并两个特定格式的字符串,并按名称排序输出结果。文章展示了如何定义类、实现排序接口以及最终输出合并后的有序字符串。
- -..星期六我朋友问我
 
把 字符串 "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


 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值