vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: Multidimensionales Array Sortieren 
Autor: Snof
Datum: 01.05.10 23:16

Hi

So hab die Klasse nochmal leicht geändert, Property genommen statt ne Get und Set Methode. Muss auf Arbeit zu viel Java machen ^^
Class ArrayBox
 
    Class ArrayComparer
        Implements IComparer(Of Integer)
 
        Private dimension As Integer
        Private indices As Integer()
        Private box As ArrayBox
        Private multiDimArray As Array
 
        Sub New(ByVal multiDimArray As Array, ByVal realIndices As Integer(), _
          ByVal dimension As Integer)
            Me.multiDimArray = multiDimArray
            Me.dimension = dimension
            Me.indices = realIndices
        End Sub
 
        Public Function Compare(ByVal x As Integer, ByVal y As Integer) As _
          Integer Implements IComparer(Of Integer).Compare
 
            indices(dimension) = x
            Dim xVal As IComparable = CType(multiDimArray.GetValue(indices), _
              IComparable)
 
            indices(dimension) = y
            Dim yVal As IComparable = CType(multiDimArray.GetValue(indices), _
              IComparable)
 
            Return xVal.CompareTo(yVal)
 
        End Function
 
    End Class
 
    Private multiDimArray As Array
 
    Private Indices As Integer()()
 
    Sub New(ByVal multiDimArray As Array)
 
        Me.multiDimArray = multiDimArray
 
        Indices = DirectCast(Array.CreateInstance(GetType(Integer()), _
          multiDimArray.Rank), Integer()())
 
        For i As Integer = 0 To Indices.Length - 1
            Indices(i) = DirectCast(Array.CreateInstance(GetType(Integer), _
              multiDimArray.GetLength(i)), Integer())
            For j As Integer = 0 To Indices(i).Length - 1
                Indices(i)(j) = j
            Next
        Next
 
    End Sub
 
    Default Property Value(ByVal indices As Integer()) As Object
        Get
            Return multiDimArray.GetValue(GetRealIndices(indices))
        End Get
        Set(ByVal value As Object)
            multiDimArray.SetValue(value, GetRealIndices(indices))
        End Set
    End Property
 
    Sub Sort(ByVal indices As Integer(), ByVal dimension As Integer)
        Array.Sort(Me.Indices(dimension), New ArrayComparer(Me.multiDimArray, _
          GetRealIndices(indices), dimension))
    End Sub
 
    Private Function GetRealIndices(ByVal indices As Integer()) As Integer()
 
        Dim indis As Integer() = DirectCast(indices.Clone, Integer())
 
        For i As Integer = 0 To indis.Length - 1
            indis(i) = Me.Indices(i)(indis(i))
        Next
 
        Return indis
 
    End Function
 
End Class
Also Aufruf geht so:
Dim box As New ArrayBox(myArray)
Auf Werte zugreifen dann so (über Default Property Value):
box(new Integer() {....}) = val
Wichtig: Es wird zwar auf das Orginal-Array zugegriffen, aber es wird nicht wirklich sortiert. Der Zugriff wird nur umgeleitet.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Multidimensionales Array Sortieren5.095hairpin27.04.10 18:23
Re: Multidimensionales Array Sortieren2.432Christoph197227.04.10 18:26
Re: Multidimensionales Array Sortieren2.550hairpin27.04.10 18:41
Re: Multidimensionales Array Sortieren2.717ModeratorDaveS27.04.10 19:10
Re: Multidimensionales Array Sortieren2.762Snof27.04.10 19:23
Re: Multidimensionales Array Sortieren2.457hairpin28.04.10 01:27
Re: Multidimensionales Array Sortieren2.637Snof28.04.10 09:16
Re: Multidimensionales Array Sortieren2.632hairpin28.04.10 12:38
Re: Multidimensionales Array Sortieren2.643ModeratorFZelle29.04.10 09:12
Re: Multidimensionales Array Sortieren2.587hairpin29.04.10 14:26
Re: Multidimensionales Array Sortieren2.419hairpin29.04.10 23:54
Re: Multidimensionales Array Sortieren2.534Snof01.05.10 12:29
Re: Multidimensionales Array Sortieren2.386hairpin01.05.10 20:18
Re: Multidimensionales Array Sortieren2.932Snof01.05.10 23:16
Re: Multidimensionales Array Sortieren2.359spiker01.05.10 17:23
Re: Multidimensionales Array Sortieren2.372ModeratorDaveS01.05.10 17:35
Re: Multidimensionales Array Sortieren2.586Snof01.05.10 19:35
Re: Multidimensionales Array Sortieren2.386ModeratorDaveS01.05.10 21:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel