• 集合对象总结


    我一直觉得在任何一门语言中,集合都是一个比较重要的概念.我们在处理数据时,大量需要用到集合.前面我们分别介绍了 NSArray,NSDictionary,NSSet以及它们的可变形式,NSMutableArray,NSMutableDictionary ,NSMutableSet等.Foundation中集合相关类的继续关系如下图:

    Collections

    NSArray 用于对象有序集合(相当于是数组)
    NSSet 用于对象无序集合
    NSDictionary 用于键值映射
    以上三种集合类是不可变的(一旦初始化后,不能再动态的增加或删除元素),如果需要用到可变集合,则需要用到下面几个类:
    NSMutableArray
    NSMutableSet
    NSMutableDictionary

    collections_intro_2x

    NSArray和NSSet所实现的基本功能其实都差不多,这和其他语言如java有很大差别,NSArray的存储数据的方式是连续的,后一个数据在内存中是紧接着前一个数据的,而NSSet在存储的时候并不是需要一块连续的内存。

    NSSet 由于在底层使用hash的思想实现的,所以他就保证了里面存储的对象必须是唯一的,类似于java中的HashSet。而NSArray可以存储相同的几 个对象。由于NSSet是用hash实现的所以就造就了它查询速度比较快,但是我们不能把某某对象存在第几个元素后面之类的有关脚标的操作。而 NSArray数组可以进行脚标的操作,但是查询速度稍微要慢一些。

    Foundation中的字典NSDictionary是由键-值对组 成的数据集合,好比java中的Map,在字典对象中key值必须是唯一的,另外字典对象中的键和值都不能为nil。,如果要在字典对象中表示一个空值, 可以用NSNull对象(这里主要指值value)。

    NSEnumerator类似于NSArray,一般不单独使用。只是作为 NSArray,NSSet 和 NSDictionary 的辅助类(它们都有相应的方法转换为NSEnumerator)。特别要注意 NSEnumerator 中的元素一旦遍历过之后就不能重新遍历,必须重新创建一个NSEnumerator。

  • 相关阅读:
    How to install php 7.x on CentOS 7
    Azure新建的CentOS设置root账户的密码
    远程激活.NET REFLECTOR(不能断网)
    C# WebApi 配置复杂路由不生效的问题
    在Mac上激活Adobe产品
    WIN10更新后出现无法联网的问题
    Mac安装SSHFS挂载远程服务器上的文件夹到本地
    输入三个数值,输出其中的最大值和最小值
    登录接口,只为自己能尽快吐槽一下这段代码
    随手记
  • 原文地址:https://www.cnblogs.com/lisa090818/p/3311887.html
Copyright © 2020-2023  润新知