2009-08-13 8 views
0

나는 모든 배열을 정렬하고 싶은 네 개의 배열을 모두 포함하는 관련 데이터,사용법 4 x 1D 배열을 정렬 하시겠습니까?

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 

있다; 배열 1 : 아티스트와 같은 배열 중 하나에 의해 필터링됩니다. AutoIt에서 문제를 프로그래밍하고 있지만 대답은 VBA/VBS/ASP, Java 또는 C# 일 수 있습니다.

신체가 도움이 될 수 있습니다 - 내 머리를 아프게 할 수 있습니다.

= |) arkSprout =

답변

1

문제 해결의 객체 지향 방식으로 앨범에 관한 모든 정보가 4 개 들어있는 앨범 유형을 정의하고, 앨범 하나의 배열을 대신 사하는 것입니다 배열.

그런 다음 앨범에 대한 비교를 원하는대로 정의 할 수 있습니다. 다음은 C#의 예는의 (자바에서 매우 유사하다) : 여기

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 인터페이스를 구현했습니다. 일반적인 개념은 모든 관련 정보를 클래스로 그룹화 한 다음 해당 클래스의 객체에 대한 비교를 해당 필드 중 하나로 정의 할 수 있습니다.

일부 사람들은 C#에서이를 구현하는 데 더 유연한 방법이 있지만 가능한 한 간단하고 언어에 구애받지 않는 것으로 유지하려고합니다.

언어가 사용자 정의 구조를 지원하는 한 복제가 가능해야하지만 AutoIT가이를 지원하는지조차 모르겠습니다. 이 경우 4 개의 배열을 유지하고 배열 중 하나를 정렬하고 동시에 3 개의 다른 모든 배열에 스왑 연산을 복제하는 사용자 정의 정렬 함수를 구현해야합니다. 그래도 훨씬 더 많은 일이 있습니다.

+0

+ 1.하지만 AutoIt에는 "Object Oriented"와 같은 것이 없습니다. –

+0

컬렉션은 AutoIt이 가능하지만, 그들은 매우 유연하지 않은 : = [코드] $ COL = ObjCreate ("Scripting.Dictionary") $ col.Item ("아티스트") = "소닉 유스" [/ 코드] 하지만 컬렉션 정렬을 구현하는 방법을 볼 수는 없지만 4 개의 배열을 단일 n * 4D 배열로 변경하는 것이 더 간단한 경로 일 수 있습니다. Hummmm ... = |) arkSprout = – DarkSprout

+0

하나의 4D 어레이가 어떤 용도로도 사용되지 않는다고 생각합니다. 언어가 맞춤 구조에 대한 적절한 지원을 제공하지 않는다면 4 개의 배열을 사용하십시오. 정상적으로하는 것처럼 1 배열에 대한 정렬 루틴을 구현하십시오. 이제 정렬 루틴에서 요소를 이동할 때마다 다른 3 개의 배열에서도 동일한 작업을 수행하여 항상 서로 동기화 상태를 유지합니다. 루틴이 완료되면 4 개의 모든 배열이 그 중 하나에 따라 정렬됩니다. 그렇지 않으면 더 나은 프로그래밍 언어로 전환 할 수 있는지 확인하십시오 ... – Asik

관련 문제