我需要創建一個名爲BigArray的數組。 BigArray需要包含來自下面數組的單詞。如何創建這個數組?
有三個數組稱爲「用戶」。每個這樣的陣列中有某些詞,如:
用戶1:貓,狗,蝙蝠
Users2:蘋果,芒果,香蕉,梨
Users3:大,小
我想以下列方式在BigArray中安排以上單詞: 貓,蘋果,大,狗,芒果,小,蝙蝠,香蕉,梨
我該怎麼做?
我需要創建一個名爲BigArray的數組。 BigArray需要包含來自下面數組的單詞。如何創建這個數組?
有三個數組稱爲「用戶」。每個這樣的陣列中有某些詞,如:
用戶1:貓,狗,蝙蝠
Users2:蘋果,芒果,香蕉,梨
Users3:大,小
我想以下列方式在BigArray中安排以上單詞: 貓,蘋果,大,狗,芒果,小,蝙蝠,香蕉,梨
我該怎麼做?
該解決方案將工作,即使你的用戶X陣列並不都具有相同尺寸:
NSMutableArray BigArray = [[NSMutableArray alloc] init];
NSMutableArray u1 = [Users1 mutableCopy];
NSMutableArray u2 = [Users2 mutableCopy];
NSMutableArray u3 = [Users3 mutableCopy];
while ([u1 count] || [u2 count] || [u3 count]) {
if ([u1 count]) {
[BigArray addObject:[u1 objectAtIndex:0]];
[u1 removeObjectAtIndex:0];
}
if ([u2 count]) {
[BigArray addObject:[u2 objectAtIndex:0]];
[u2 removeObjectAtIndex:0];
}
if ([u3 count]) {
[BigArray addObject:[u3 objectAtIndex:0]];
[u3 removeObjectAtIndex:0];
}
}
[u1 release];
[u2 release];
[u3 release];
/* BigArray now contains what you need */
想到的是一個溫和的複雜循環的第一件事情(也許還有一個更優雅方式,不知道)。
BOOL done = FALSE;
NSArray *arrays = [NSArray arrayWithObjects:users1, users2, users3, nil];
NSArray *array;
NSMutableArray *bigArray = [NSMutableArray arrayWithCapacity:users1.count+users2.count+users3.count];
int i = 0;
int j;
while (! done) {
done = TRUE;
for (j = 0; j < arrays.count; j++) {
array = [arrays objectAtIndex:j];
if (i < array.count) {
[bigArray addObject:[array objectAtIndex:i]];
done = FALSE;
}
}
i++;
}
看看這有助於
NSArray *a1 = [[NSArray alloc] initWithObjects:@"Cat", @"Dog", @"Bat",nil];
NSArray *a2 = [[NSArray alloc] initWithObjects:@"Apple", @"Mango", @"Banana", @"Pear",nil];
NSArray *a3 = [[NSArray alloc] initWithObjects:@"Big", @"Small",nil];
NSUInteger arrayLength = [a1 count]+[a2 count]+[a3 count];
NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:(arrayLength)];
for (NSUInteger index = 0; index < [a2 count]; index++) { // take the size of the biggest array
if(index < [a1 count])
[finalMutableArray addObject:[a1 objectAtIndex:index]];
[finalMutableArray addObject:[a2 objectAtIndex:index]];
if(index < [a3 count])
[finalMutableArray addObject:[a3 objectAtIndex:index]];
}
NSArray *finalArray = [NSArray arrayWithArray:finalMutableArray];
[a1 release];
[a2 release];
[a3 release];
什麼是BigArray的填充背後的邏輯是什麼?何時使用哪個數組? – dasdom
我需要通過從每個Users數組中依次選擇元素來創建BigArray。 – meetpd