利用多核优势,遍历NSDictionary

本文探讨了在多核CPU环境下如何优化NSDictionary的遍历,指出传统通过key获取value的方法可能效率低下,并简要总结了常见的遍历方法。
摘要由CSDN通过智能技术生成

在现在多核CPU的时代,如果遍历NSDictionary的时候你还是通过先取key,在通过key取v alue的方式,你就out啦

    NSMutableDictionary        *_dbalertlogMap;
[_dbalertlogMap enumerateKeysAndObjectsUsingBlock:^(id key, id obj,   BOOL *stop) {
 NSLog(@“value for key %@ is %@”, key, value);
}
用这种办法可以充分利用CPU性能。

下面再把传统的几个遍历方式总结下:

方法一:

- (void)describeDictionary:(NSDictionary *dict)
{
   NSArray *keys;
   int i, count;
   id key, value;
   keys = [dict allKeys];
   count = [keys count];
   for (i = 0; i < count; i++)
  {
  key = [keys objectAtIndex: i];
  value = [dict objectForKey: key];
  NSLog (@"Key: %@ for value: %@", key, value);
  }
}
方法二:
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];

for (NSString *key in dict) {
 NSLog(@"key: %@ value: %@", key, dict[key]);
}
方法三


 NSLog(@"Hello, World!");
        NSDictionary *myDic=[[NSDictionary alloc]initWithObjectsAndKeys:@"张三",@"name",@"李四",@"name", nil];
        
        NSUInteger count = [myDic count];  
        NSLog(@"词典的数量为:  %lu",count); 
      
        NSEnumerator * myEnumerator = [myDic keyEnumerator];  
        
         
        for (NSObject *object in myEnumerator) {  
            NSLog(@"遍历KEY的值: %@",object);  
        }
        
        myEnumerator = [[myDic allValues] objectEnumerator];
        NSString *value;
        while((value = [myEnumerator nextObject]))
        {
            NSLog(@"遍历的值: %@",value);
        }
        
        //通过KEY找到value  
        NSObject *myObject = [myDic objectForKey:@"name"];
        
        if (myObject != nil) {  
            NSLog(@"通过KEY找到的value是: %@",myObject);  
        }  
        
        NSMutableDictionary *mydic2 = [NSMutableDictionary dictionaryWithCapacity:10];  
        [mydic2 setObject:@"Alex Hu" forKey:@"name"];  
        [mydic2 setObject:@"1388888888" forKey:@"mobile number"]; 
        
        for (NSObject *object in [mydic2 objectEnumerator]) {  
            NSLog(@"遍历的值: %@",object);  
        }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一步一台阶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值