假设我有一个学生课程,如下所示:
class Student {
NSNumber *id;
NSString *lastName;
NSString *firstName;
}
现在,当我从 Web 服务获取所有学生的记录时,我有一个 NSArray 来存储所有学生的记录。在某些时候,我需要查找数组以根据名字查找特定学生的记录。
假设我创建了一个名为 studentsFirstNameDictionary 的字典。
所以在将对象添加到学生数组时,我可以做
Student objStudent = [[Student alloc] init];
objStudent.Id = someId;
objStudent.firstName = someName;
objStudent.lastName = someLastName;
[studentsDictionary setValue:iterationCounter forKey:objStudent.firstName];
[students addObject:objStudent];
我想知道创建此字典以加快查找速度是否是个好主意,如下所示。还请假设在任何情况下都需要数组,并且为了快速查找,我正在创建其他字典,也将姓氏和 id 作为键和索引存储为上面的值:
-(Student*)getStudentByFirstName:(NSString *)firstName {
int idxOfStudent = [ studentsDictionary valueForKey:firstName];
return [students idxOfStudent];
}
您是否认为这种方法比遍历学生数组并比较名字并返回匹配的学生记录在性能方面更好?
我总是需要学生数组,因为我需要用该数组填充表格视图。我想知道在填充数组时创建多个字典是否明智,以便我可以通过名字、姓氏或 ID 更快地查找学生记录?
PS:为简单起见,考虑到所有学生都有唯一的名字、姓氏和 ID,因此在创建存储名字、姓氏或 ID 作为值的字典时不会有任何问题。