-1

私は4つの配列を持っています:

Data Example:= (Array 1 | Array 2 | Array 3 | Array 4)

R.E.M.|In Time: The Best Of R.E.M. 1988-2003|album:6G5BGhEiLvck3kvKpSYw2y|Rock
Nick Drake|Family Tree|album:2euLAROPTmXDIDuU3qVMkf|Folk
Sonic Youth|Dirty|album:0QPkL6ap8riBoQ5xN8YDR3|Noise Rock

array などの配列の 1 つによってフィルター処理されたすべての配列を並べ替えたいと思います1: Artist

私は AutoIt でプログラミングしていますが、答えは VBA/VBS/ASP、Java、または C# である可能性があります。

4

2 に答える 2

1

この問題を解決するオブジェクト指向の方法は、アルバムに関連する4つの情報すべてを含み、4つの配列ではなく単一のアルバムの配列を持つアルバムタイプを定義することです。

次に、必要に応じてアルバムの比較を定義できます。これがC#の例です(Javaでも非常に似ています):

class Program {
    static void Main(string[] args) {
        Album[] albums = { new Album {  artist = "potatotes", 
                                        family = "soup", 
                                        title = "a", 
                                        year=1546 },
                           new Album {  artist = "etc",
                                        family="blabla",
                                        title="blablabla",
                                        year = 1999 }
                         };
        Array.Sort(albums);
    }
}

class Album : IComparable<Album> {

    public int CompareTo(Album y) {
        return family.CompareTo(y.family);
    }


    public string title { get; set; }
    public string artist { get; set; }
    public int year { get; set; }
    public string family { get; set; }
}

ここでは、アルバムのファミリの観点からIComparableインターフェイスを実装しました。一般的な考え方は、関連するすべての情報をクラスにグループ化することです。次に、そのフィールドの1つに関して、そのクラスのオブジェクトの比較を定義できます。

一部の人が指摘するかもしれませんが、C#でこれを実現するためのより柔軟な方法がありますが、私はこれを可能な限り単純で言語に依存しないようにしたいと思いました。

言語がユーザー定義の構造をサポートしている限り、これを複製することは可能ですが、AutoITがそれをサポートしているかどうかさえわかりません。その場合、4つの配列を保持し、配列の1つを並べ替えて、他の3つすべてに同時にスワップ操作を複製するカスタム並べ替え関数を実装する必要があります。しかし、それはもっと多くの仕事です。

于 2009-08-13T02:52:02.237 に答える