美文网首页
集合类型

集合类型

作者: 方方1307007 | 来源:发表于2016-02-28 11:38 被阅读0次

集合类型有三种:

Array数组,基于索引的有序的序列

Set,无序的,而且值是唯一的集合

Dictionary,键值对,Keys只能是唯一的,Values可以是重复的

NSArray被定义为class,引用类型,拷贝时就是指针在拷贝,指向的还是同样的对象

数组封装后具有面向对象特性,索引从0开始,索引访问越界会抛出运行时异常

NSArray的元素必须是对象,即NSObject的子类

如值类型,不能直接放入数组,要用NSNumber来封装为对象类型才可以

1.使用NSNumber将NSInteger包装为对象

2.或使用字面常量初始化

如C语言结构类型,须用NSValue封装为对象类型,才能放入数组

使用NSValue将struct包装为对象

数组元素可以是不同对象类型,可能会有类型不安全

NSArray具有常量性,长度和元素指针都不能更改,但指针指向的对象内部可以更改

两个对象默认只能比较指针是否相等,如果比较对象是否相等,必须重写NSObject的isEqual函数,然后提供值相等的比较

数组遍历,有三种方式:

最快,Fast Enumeration,快速枚举方法,优化索引检查和动态消息分发

较慢,NSEnumerator,迭代器设计模式

最慢,For循环

数组查找

indexOfObject查找值是否相等的对象

indexOfObjectIdenticalTo查找引用相等的对象

数组排序

不改变原数组(常量性),返回新数组

NSMutableArray可变数组

支持更改长度和元素指针,是NSArray的子类

NSMutableArray初始化后,会分配一个缓存容量capacity,一般大于实际容量,长度增加时,capacity会以近似二倍方式增长,代价是分配新的堆内存,长度是以前的两倍,原来堆内存的元素拷贝到新的堆内存上,再释放以前的堆内存

避免方法:给预估容量,避免以后增长

常量集合NSSet是无序集合,存储对象不能重复,被定义为class,也是引用类型

可变集合NSMutableSet,创建时提前设好capacity

集合支持Fast Enumeration和NSEnumerator,前者较快

NSDictionary是存储key-value的无序集合,key唯一,value可重复,被定义为class,引用类型

可变NSMutableDictionary,用initWithCapacity提前设capacity

Dictionary支持Fast Enumeration和NSEnumerator,前者较快

相关文章

  • iOS 深拷贝浅拷贝

    一,集合类型(NSArray、NSDictionary、NSSet等类型)与非集合类型(NSString等类型) ...

  • #python基础入门#04

    <组合数据类型> 集合类型序列类型(字符串,元组,列表)字典类型 集合类型:集合是多个元素的无序组合 特点:无序,...

  • redis 基本使用

    什么是redis 键值类型 String字符类型 map散列类型 list列表类型 set 集合类型 有序集合类型...

  • hive集合类型

    hive集合类型集合类型主要包括:array,map,struct等,hive的特性支持集合类型,这特性是关系型数...

  • 集合类型

    Collection 类型 Collection Type 数组(Array),字典(Dictionary),集合...

  • 集合类型

    上一篇:控制流当前篇:集合类型下一篇:基础大杂烩 这一课我们将学习更加抽象的数据类型:集合类型 ,集合类型是用来存...

  • 集合类型

    集合类型 Swift提供了三种主要的集合类型,称为数组,集合和字典,用于存储值的集合。数组是有序的值集合。集合是唯...

  • 集合类型

    Swift提供了三种基本的几个类型,也就是我们熟知的数组Array,集合Set,字典dictionary,用来...

  • 集合类型

    1有序可重复 1.1Array数组 一旦定义,数组的大小不可变,其中的元素类型不可变 1.2 MutableLis...

  • 集合类型

    [TOC] Swift语言提供了 Array Set和 Dictionary 三种基本的集合类型用来存储集合数据。...

网友评论

      本文标题:集合类型

      本文链接:https://www.haomeiwen.com/subject/wpzwkttx.html