我遍历了一长串的名字,我将每个名字都分配给了一个' Person'宾语。 Person
对象有firstName
和lastName
。我正在寻找一种有效的方法来排序从firstNames
到A
开头的所有Z
。我已经提出了这个解决方案,但它并不高效,或者肯定比创建#39;更容易。每个字母表的数组。
for(int i = 0; i < numberOfPeople; i++) {
...
if ([person.firstName hasPrefix:@"A"] || [person.firstName hasPrefix:@"a"]) {
[self.letterA_Array addObject:person];//NSMutableArray
}
...
}
如果它可以与对象一起使用,我想要类似下面的例子,但我不确定:
NSDictionary *animals = @{@"B" : @[@"Bear", @"Black Swan", @"Buffalo"],
@"C" : @[@"Camel", @"Cockatoo"],
@"D" : @[@"Dog", @"Donkey"],
@"E" : @[@"Emu"],
@"G" : @[@"Giraffe", @"Greater Rhea"],
@"H" : @[@"Hippopotamus", @"Horse"],
@"K" : @[@"Koala"],
@"L" : @[@"Lion", @"Llama"],
@"M" : @[@"Manatus", @"Meerkat"],
@"P" : @[@"Panda", @"Peacock", @"Pig", @"Platypus", @"Polar Bear"],
@"R" : @[@"Rhinoceros"],
@"S" : @[@"Seagull"],
@"T" : @[@"Tasmania Devil"],
@"W" : @[@"Whale", @"Whale Shark", @"Wombat"]};
答案 0 :(得分:1)
你可以这样做:
NSArray *names = @[@"Bob", @"Book2", @"August", @"Zulu", @"Agnoz"];
NSMutableDictionary *buckets = [[NSMutableDictionary alloc] init];
for (NSString *name in names) {
NSString *index = [name substringToIndex:1];
if (!buckets[index]) {
buckets[index] = [[NSMutableArray alloc] init];
}
[buckets[index] addObject:name];
}