Objective-C中集合类

iOS中集合类与数学中的集合一样,集合中元素必须是唯一的,存储元素是无序的,存储元素必须是对象类型.

集合分为不可变集合(NSSet)和可变集合(NSMutableSet)

不可变集合(NSSet)

创建集合对象

1 1 NSSet *set = [NSSet setWithObjects:@"a", @"p", @"p", nil];
2 2 NSLog(@"set: %@", set);
3 // 获取集合中元素个数
4 3 NSLog(@"count: %ld", set.count);
5 // 获取集合中某个元素
6 4 NSLog(@"object: %@", [set anyObject]);

因为集合总元素是唯一的,所以此时打印出的count值是2.

判断集合中是否包含某个对象

1 if ([set containsObject:@"a"]) {
2        NSLog(@"集合中包含该对象");
3     } else {
4         NSLog(@"集合中不包含该对象");
5     }

可变集合(NSMutableSet)

创建集合对象

1 NSMutableSet *mSet = [NSMutableSet set];
2 // 添加元素
3 [mSet addObject:@"i"];
4 [mSet addObject:@"O"];
5 [mSet addObject:@"S"];
6 NSLog(@"mSet: %@", mSet);

删除元素

1 // 删除
2 [mSet removeObject:@"i"];
3 NSLog(@"mSet: %@", mSet);

计数集合 (NSCountedSet)

NSCountedSet是NSMutableSet的子类,能记录元素重复的次数,在set的基础上添加了计数功能.

 1 // 创建集合
 2 NSCountedSet *cSet = [NSCountedSet set];
 3 // 添加元素
 4 [cSet addObject:@"a"];
 5 [cSet addObject: @"p"];
 6 [cSet addObject:@"p"];
 7 NSLog(@"cSet: %@", cSet);
 8 NSLog(@"count: %ld", cSet.count);
 9 // 元素在集合中被添加的次数
10 NSLog(@"count: %ld", [cSet countForObject:@"p"]);
时间: 2024-08-05 03:20:11

Objective-C中集合类的相关文章

objective C中的字符串(三)

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7343561 objective C中的字符串操作 在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的操作字符串,下面举几个例子: 1.创建: 直接利用等号赋值 NSString *

objective C中继承、协议、分类和多态的实现

第一.objective C中继承的实现 在oc中只有实例变量会有权限控制,实例方法和类方法是没有权限控制的,这点与c++不同,OC默认的是protected,并且在声明权限控制时,没有分号 在OC中可以像C++一样用指针运算法来访问实例变量 Rectangle.h 文件代码: #import <Foundation/Foundation.h> @interface Rectangle : NSObject { int _width; int _height; } @property (non

objective C中的字符串

holydancer原创,如需转载,请在显要位置注明: 转自holydancer的CSDN专栏,原文地址:http://blog.csdn.net/holydancer/article/details/7343561 objective C中的字符串操作 在OC中创建字符串时,一般不使用C的方法,因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,在Cocoa中NSString集成的一些方法,可以很方便的操作字符串,下面举几个例子: 1.创建: 直接利用等号赋值 NSString *

首先java中集合类主要有两大分支

本文仅分析部分原理和集合类的特点,不分析源码,旨在对java的集合类有一个整体的认识,理解各个不同类的关联和区别,让大家在不同的环境下学会选择不同的类来处理. Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成. 首先java中集合类主要有两大分支: (1)Collection (2)Map 先看它们的类图: (1)Collection Collection (2)Map Map 可以看到它们之间的关系纷繁复杂,如果不系统的学习一下,还真

java中集合类中Collection接口中的List接口的常用方法熟悉

1:集合类,在java语言中的java.util包提供了一些集合类,这些集合类又被称作容器. 2:区别集合类和数组.(1)数组的长度是固定的,集合的长度是可变的.(2)数组是用来存放基本数据类型的,集合是用来存放对象的引用. 3 : 常用的集合有List集合,Set集合,Map集合.其中List集合和Set集合实现Collection接口. 4:Collection接口是层次结构中的根接口,构成Collection的单位,被称为元素.Collection接口通常不能直接使用,但是该接口提供了添加

Objective C中定义可变参函数

Objective C中有很多不定参函数,例如NSLog(format, arg1, arg2),还有字符串或数组在构造时所用的[NSString stringWithFormat: format, arg1, arg2, arg3],它们的方法原型分别是: FOUNDATION_EXPORT void NSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2); + (id)stringWithFormat:(NSString *)format,

Objective - C中属性和点语法的使用

一.属性 属性是Objective—C 2.0定义的语法,为实例变量提供了setter.getter方法的默认实现能在一定程度上简化程序代码,并且增强实例变量的访问安全性 OC中的属性机制提供了便捷的设置和获取实例变量的方式,或者说属性提供了一个默认的设置器和访问器的实现:属性提供的方法是现实可配置的,属性的好处:相当于自己编写这一对方法,属性提供了一系列清晰分明的说明参数来定义设置器和访问器的行为,编译器可以根据你设置的说明参数为你生成相应的方法,减少你的代码量和维护工作量 设置器(sette

Java中集合类容器初步了解

容器(Collection) 数组是一种容器,集合也是一种容器 java编程中, 装其他各种各样的对象(引用类型)的一种东西, 叫容器 (图书馆里所有的书, 要想管理图书馆里所有的书, 就需要先把这些书放到一个东西里面, 目前掌握的知识来说, 只能是数组, 数组的长度是固定的, 这就出现 一个问题, 数组的长度该定义成多长 ? 长度是不固定的, 因为不知道有多少本书, 这个时候需要这样一种机制: 定义一种东西, 长度不固定, 可以随时添加和删除, 这种东西就是Collection, 只要不超出内

Objective - C 中的KVC(一)(视图、便携、易懂、原创纯手打 定制版)

KVC的使用 1.KVC 全称 key valued coding 键值编码 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性.JAVA,C#都有这个机制.ObjC也有,所以你根部不必进行任何操作就可以进行属性的动态读写,就是KVC. KVC的操作方法由NSKeyValueCoding提供,而他是NSObject的类别,也就是说ObjC中几乎所有的对象都支持KVC操作. 2.常用方法 获取值的方法 valueForKey