ios 集合总结

NSArray 用于对象有序集合(相当于是数组)

NSSet 用于对象无序集合

NSDictionary 用于键值映射 以上三种集合类是不可变的(一旦初始化后,不能再动态的增加或删除元素),如果需要用到可变集合,则需要用到下面几个类:

NSMutableArray

NSMutableSet

NSMutableDictionary

实例DEMO:

1:NSArray 初始化和遍历迭代

(1)NSArray的初始化

           NSArray的便利初始化函数: -(id) initWithObjects : (id) firstObject, ....;

           NSArray的便利构造器: +(id) arrayWithObjects: (id) firstObject, ...;

           demo:

          //NSArray的便利初始化

          NSArray *array1 = [[NSArray alloc] initWithObjects:@"aaa", @"bbb", @"ccc", nil];

          //NSArray的便利构造器

          NSArray *array2 = [NSArray arrayWithObjects:@"111", @"222", @"333", nil];

    (2)获取数组元素的个数和数组的元素

           //获取数组元素的个数和元素

           int count = (int)[array1 count];

          //获取相应索引的元素

          id element = [array1 objectAtIndex:0];

          NSLog(@"array1_count = %d, array[0] = %@", count, element);

     (3)迭代:

     //封装遍历数组的函数

      void array_display(id array)

      {

       for (int i = 0 ; i < [array count]; i++) {

          id temp = [array objectAtIndex:i];

          NSLog(@"%@", temp);

      }

    }

2:NSMutableArray初始化和遍历迭代

 2.可变数组:NSMutableArray

NSArray的容量是固定的,而NSMutableArray的容量是可变的,我们可以在NSMutableArray实例化的时候先初始化一个容量,不过这个容量不是固定的,不够的时候会自动增加。NSMutableArray是NSArray的子类,是对NSArray的一个扩充。

(1) NSMutableArray的初始化

     NSMutableArray的便利初始化函数:-(id) initWithCapacity :  (NSUInteger)    numItems;

     NSMutableArray的便利构造器:+(id) arrayWithCapacity: (NSUInteger) numItems;

  demo:

      //NSMutableArray的便利初始化
       NSMutableArray *array3 = [[NSMutableArray alloc] initWithCapacity:3];
      //NSMutableArray的便利构造器
       NSMutableArray *array4 = [NSMutableArray arrayWithCapacity:3];

 (2)元素的添加和删除

                增加元素: -(void) addObject: (id) anObject; --往数组的尾部添加元素

                删除全部内容: -(void) removeAllObjects;

                删除最后一个元素: -(void) removeLastObject;

                通过索引删除元素: -(void) removeObjectAtIndex: (NSUInteger) index;

                删除任意一个元素: -(void) removeObject : (id)object;

  demo:

//初始化NSMutableArray
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"111", @"222", @"333", nil];
//添加元素
[array addObject:@"444"];

//移除元素
[array removeObject:@"111"];

//移除最后一个元素
[array removeLastObject];

//按照索引删除元素
[array removeObjectAtIndex:0];

array_display(array);

 删除任意一个元素: -(void) removeObject : (id)object;

//初始化NSMutableArray
NSMutableArray *array = [NSMutableArray arrayWithObjects:@"111", @"222", @"333", nil];
//添加元素
[array addObject:@"444"];

//移除元素
[array removeObject:@"111"];

//移除最后一个元素
[array removeLastObject];

//按照索引删除元素
[array removeObjectAtIndex:0];

array_display(array);

时间: 2024-07-30 15:44:22

ios 集合总结的相关文章

IOS 集合视图指南1:介绍

About iOS Collection Views(关于IOS集合视图) A collection view is a way to present an ordered set of data items using a flexible and changeable layout. The most common use for collection views is to present items in a grid-like arrangement, but collection v

iOS 集合的深复制与浅复制

概念 对象拷贝有两种方式:浅复制和深复制.顾名思义,浅复制,并不拷贝对象本身,仅仅是拷贝指向对象的指针:深复制是直接拷贝整个对象内存到另一块内存中. 一图以蔽之 再简单些说:浅复制就是指针拷贝:深复制就是内容拷贝. 集合的浅复制 (shallow copy) 集合的浅复制有非常多种方法.当你进行浅复制时,会向原始的集合发送retain消息,引用计数加1,同时指针被拷贝到新的集合. 现在让我们看一些浅复制的例子: NSArray *shallowCopyArray = [someArray cop

iOS集合视图单元格高亮和选中的区别

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流之用,请勿进行商业用途.同时,转载时不要移除本申明. 如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! 集合视图(Collection View)拥有一个遵守UICollectionViewDelegate协议的delegate属性.该委托属性将从集合视图接收到各种委托调用

IOS 集合视图指南2:集合视图基础

Collection View Basics(集合视图基础) To present its content onscreen, a collection view cooperates with many different objects. Some objects are custom and must be provided by your app. For example, your app must provide a data source object that tells the

IOS集合NSSet与NSMutableSet知识点

NSSet在实际应用中与NSArray区别不大,但是如果你希望查找NSArray中的某一个元素,则需要遍历整个数组,效率低下.而NSSet在查找某一特定的元素的时候则是根据hash算法直接找到此元素的位置,效率高. NSSet是一个无序的,管理对个对象的集合类,最大特点是集合中不允许出现重复对象,和数学上的集合含义是一样的.除了无序,不许重复,其他功能和NSArray是一样的;需要注意的是:NSSet,NSArray里面只能添加cocoa对象,如果需要加入基本数据类型(int,float,BOO

分享一下自己ios开发笔记

// ********************** 判断数组元素是否为空 ********************** NSString *element = [array objectAtIndex:2]; if ((NSNull *)element == [NSNull null]) { } 今天做项目的时候就遇到,要判断数组元素是否为空,我的以下写法,都无效 if(!element) if([element length]>0) if(element== NULL) if(element

iOS开发——面试篇&amp;面试总结(二)

面试总结(二) 1. 风格纠错题 修改方法有很多种,现给出一种做示例: 下面对具体修改的地方,分两部分做下介绍:硬伤部分和优化部分 .因为硬伤部分没什么技术含量,为了节省大家时间,放在后面讲,大神请直接看优化部分. 优化部分 1)enum建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型,参见官方的 Adopting Modern Objective-C 一文: 1 2 3 4 5 //定义一个枚举 typedef NS_ENUM(NSInteger, CYLSex) {   

iOS面试题整理(上) 仔细研读受益匪浅

1. 风格纠错题 修改完的代码: 修改方法有很多种,现给出一种做示例: // .h文件 // http://weibo.com/luohanchenyilong/ // https://github.com/ChenYilong // 修改完的代码,这是第一种修改方法,后面会给出第二种修改方法 typedef NS_ENUM(NSInteger, CYLSex) { CYLSexMan, CYLSexWoman }; @interface CYLUser : NSObject<NSCopying

iOS面试题大全1-24

1.风格纠错题 2. 什么情况使用 weak 关键字,相比 assign 有什么不同? 什么情况使用 weak 关键字? 在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性 自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak:当然,也可以使用strong.在下文也有论述:<IBOutlet连出来的视图属性为什么可以被设置成weak?> 不同点: