나는 이와 같은 객체를 가진 기존 애플리케이션을 가지고있다.여러 컬렉션을 나타내는 데이터 구조 란 무엇입니까?
class MyObject{
public MyCollection TypeOnes;
public MyCollection TypeTwos;
public MyCollection TypeThrees;
public MyCollection All;
}
class MyCollection : Collection{
public boolean IsLoaded;
}
그리고 이렇게로드됩니다. 당신은 분명 모든 유형이 All
컬렉션 한 번에로드하지 않는 동기화 될 유형을 모두 표현하기 위해 가정되는 All
모음을 볼 수 있듯이
//using bool array for flag simplicity in example
public void Load(ref MyObject obj, bool[] flags){
if(flags[0]){
obj.TypeOnes = LoadOnes();
obj.TypeOnes.IsLoaded = true;
}else{
obj.TypeOnes = new MyCollection();
}
if(flags[1]){
obj.TypeTwos = LoadTwos();
obj.TypeTwos.IsLoaded = true;
}else{
obj.TypeTwos= new MyCollection();
}
if(flags[2]){
obj.TypeThrees = LoadThrees();
obj.TypeThrees.IsLoaded = true;
} else {
obj.TypeThrees = new MyCollection();
}
if(flags[3]){
obj.All = obj.TypeOnes.Clone().AddRange(obj.TypeTwos.Clone()).AddRange(obj.TypeThrees.Clone());
obj.All.IsLoaded = true;
} else {
obj.All = new MyCollection();
}
}
.
모든 유형 컬렉션을로드하는 단일 플래그를 만드는 것이지만 All
컬렉션을 사용하여 모든 유형 컬렉션에 즉시 액세스하고 동기화 할 수 있습니다. 리팩토링의 양을 제한하기 위해해야 할 일이 있습니다. 읽기/쓰기가 가능하여 TypeOnes
컬렉션을 변경하면 All
컬렉션에 반영되고 그 반대의 경우도 마찬가지입니다.
여기에 사용할 수있는 기존 데이터 형식이 있습니까?
내가 만들려는 데이터 구조의 종류가 아닌 경우?
중복을 제거해야하는 특별한 이유가없는 한, 'Concat'은 'Union'보다 속도와 메모리 사용면에서 오버 헤드를 줄입니다. – Servy
@Servy : 좋은 지적입니다. 나는 지난 며칠 동안'HashSet'으로 광범위하게 작업 해 왔으며 내 머리 속에 춤추는 환상을 가지고 있습니다 :-) 업데이트 중입니다. –
+1 'Concat' 대신 Union 사용시 좋은 점 : Union이 올바른 컬렉션을 생성하지 못하는 경우. –