zoukankan      html  css  js  c++  java
  • 集合遍历

    ---恢复内容开始---

    集合遍历 

    集合:OC中提供的容器类,数组,字典,集合。

     遍历:对集合中元素依次取出的过程叫做遍历。 

    有三种方式:

    1、for循环遍历

    数组遍历

    原理:通过for循环的循环变量用作数组元素下标来获取不同下标的元素。 

    循环次数就是数组元素的个数。

    NSArray *array = @[@"1", @"2",@"3", @“4"];

    for (NSUInteger i = 0; i < array.count; i++) {

        NSString *value = [array objectAtIndex:i];

        NSLog(@“value:%@", string);

    字典遍历 

    原理:先获取字典中所有的key ,存储到数组中,遍历数组依次取出每个key ,然后根据key从字典中取出对应的value。 字典取值要通过key取出对应的value。 循环次数等于字典的元素个数。 

    NSDictionary *dictionary = @{@"key1":@"value1",@"key2":@"value2", @"key3":@"value3",@“key4":@"value4"};

    NSArray *keys = [dictionary allKeys];

    for (NSUInteger i = 0; i < keys.count; i++) {

        NSString *key = [keys objectAtIndex:i];

        NSString *value = [dictionary objectForKey:key];

        NSLog(@"value:%@", value);

    集合遍历 

    原理: 集合的allObject 属性先取到集合的所有元素存储到数组中,再通过for循环的循环变量用作下标来取到每个元素。 

    NSSet *set = [NSSet setWithObjects:@"1",@"2", @"3", @"4", nil];

    NSArray *objects = set.allObjects;

    for (NSUInteger i = 0; i < objects.count; i++) {

        NSString *value = [objects objectAtIndex:i];

        NSLog(@"value:%@", value);

    }

    2、NSEnumerator

    NSEnumerator 

    枚举器,遍历集合中的元素。 依附于集合类。 NSEnumerator 的nextObject法可以遍历每个集合元 素,结束返回nil,通过与while结合使用可遍历集合中所有元素。

    对可变集合进行枚举操作时,不能通过添加或删除对象这类方式来改变集合容器的元素个数。

    NSArray *array = @[@"element1", @"element2", @"element3", @“element4"];
    NSEnumerator *enumerator = [array objectEnumerator]; //正序的枚举器对象 

    id value = nil; //存储数组中的元素
    while ((value = [enumerator nextObject])) {   

       NSLog(@"%@", value);

     }

    注:枚举器的nextObject法只能取出一个对象,所以需要和while循环结合把所有元素依次取出。 

    数组反向枚举 

    NSArray *array = @[@"element1", @"element2", @"element3", @“element4"];
    NSEnumerator *reverse = [array reverseObjectEnumerator]; //逆序的枚举器对象 id value = nil; //存储数组中的元素 

      while ((value = [reverse nextObject])) {

          NSLog(@"%@", value1);

    字典枚举遍历和集合枚举遍历 都与数组相似,只是由于字典和数组中存储的元素是无序的,因此没有反向枚举的概念!

    ---恢复内容结束---

  • 相关阅读:
    bzoj2434: [Noi2011]阿狸的打字机
    bzoj2830: [Shoi2012]随机树
    题解,作业*2
    bzoj1901: Zju2112 Dynamic Rankings
    luogu P4178 Tree
    CF1042C Array Product 分类讨论+贪心
    CF946D Timetable 动态规划
    CF597C Subsequences 树状数组 + 动态规划
    CF912D Fishes 期望 + 贪心
    bzoj 4321 queue2 dp
  • 原文地址:https://www.cnblogs.com/d-mm/p/5210208.html
Copyright © 2011-2022 走看看