objective_c 之集合

//数组存放的内容必须是NSOject对象
//数组存放的内容是有序的
/**
* NSArray 不可变数组
*/

/**
* 1.创建对象
*/

//使用初始化方法
NSArray *array1 = [[NSArray alloc]initWithObjects:@10, @"娜娜", @"怀玉", @"满明强", @"金明", @"阿福", nil];
NSArray *array2 = [[NSArray alloc]initWithArray:array1];

//类方法
NSArray *array3 = [NSArray arrayWithObjects:@"曲国伟", @"小南", @"周雨琪", @"bobo", @"xiaozun", nil];
//字面量方法
NSArray *array4 = @[@"yangyunda", @"yangshukai", @"yida", @"wumingwei"];
NSLog(@"array4 = %@", array4);

/**
* 2.数组查找
*/
//通过下标访问对象
NSLog(@"%@", array1[1]);

NSString *str1 = [array1 objectAtIndex:2];
NSLog(@"%@", str1);

//通过对象访问下标
NSString *str2 = @"阿福";
NSInteger index = [array1 indexOfObject:str2];
NSLog(@"%lu", index);

/**
* 3.判断数组中是否包含某个指定的对象
*/
BOOL isHave = [array3 containsObject:@"小南"];
NSLog(@"%d", isHave);

/**
* 4.NSString和NSArray之间的转换
*/
NSString *string1 = @"孙超&程晗&孟玲旭";
//将一个字符串按照指定字符截取, 每段内容存放在数组中
NSArray *strArray = [string1 componentsSeparatedByString:@"&"];
NSLog(@"%@ %@ %@", strArray[0], strArray[1], strArray[2]);

//将数组中的元素按照指定的字符串拼接成新的字符串对象
NSArray *array5 = @[@"雷坤", @"于艳萍", @"尹浩"];
NSString *string2 = [array5 componentsJoinedByString:@"&"];
NSLog(@"%@", string2);

//练习: 将字符串转为数组
NSString *strTemp = @"http://www.imanhua.com/Cover/2011-10/hyrz.jpg&http://www.imanhua.com/Cover/2011-09/op.jpg&http://www.imanhua.com/Cover/2012-04/yjdwb.jpg";
NSArray *tempArray = [strTemp componentsSeparatedByString:@"&"];
NSLog(@"%@", tempArray);

/**
* NSMutableArray 可变的数组
*/

//1.创建对象

//初始化方法
NSMutableArray *mArray = [[NSMutableArray alloc]initWithObjects:@10, @4.3, @"dfa", @"qewfk", nil];
//类方法
NSMutableArray *mArray1 = [NSMutableArray arrayWithObjects:@"阿斯蒂芬", @43, @54.43, @"大师傅", nil];
//2.添加元素 插入元素
[mArray addObject:@"王"];
NSLog(@"%@", mArray);
[mArray insertObject:@10 atIndex:1];
NSLog(@"%@", mArray);
//3.删除元素
[mArray1 removeObject:@"阿斯蒂芬"];
NSLog(@"%@", mArray1);
//4.替换指定位置的对象
[mArray1 replaceObjectAtIndex:1 withObject:@"wuse"];
NSLog(@"%@", mArray1);
//5.交换两个指定位置的对象
[mArray1 exchangeObjectAtIndex:1 withObjectAtIndex:2];
NSLog(@"%@", mArray1);

/**
* 字典 存放键值对类型的数据
*/

/*
name : zhangsan
sex : boy
age : 13

*/

NSDictionary 不可变的字典
   字典中存放的数据是无序的
字典中key值是唯一的
/**
* 1.创建对象
*/
初始化方法
NSDictionary *dict1 = [[NSDictionary alloc]initWithObjectsAndKeys:@"zhangsan", @"name", @"boy", @"sex", @18, @"age", nil];
NSLog(@"%@", dict1);

NSDictionary *dict2 = [[NSDictionary alloc]initWithObjects:@[@"zhangsan", @"boy", @18] forKeys:@[@"name", @"sex", @"age"]];
NSLog(@"%@", dict2);
//类方法
NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"liuaoran", @"name", @"nan", @"sex", @18, @"age", nil];
NSLog(@"%@", dict3);
//字面量方法
NSDictionary *dict4 = @{
@"name" : @"gaojie",
@"sex" : @"boy",
@"age" : @28,
@"hobby": @"nana"
};
NSLog(@"%@", dict4);

/**
* 2.查找
*/
//根据key查找object
NSString *string1 = [dict4 objectForKey:@"name"];
NSLog(@"%@", string1);

//下标法, key值作为下标
NSLog(@"%@", dict4[@"name"]);

/**
* 3.获取字典长度
*/
NSLog(@"%lu", [dict4 count]);

//NSMutableDictionary 可变的字典

//1.创建对象
NSMutableDictionary *mdic = [[NSMutableDictionary alloc]initWithDictionary:@{
@"name" : @"gaojie",
@"sex" : @"boy",
@"age" : @28,
@"hobby": @"nana"
}];
NSLog(@"%@", mdic);
NSMutableDictionary *mdic1 = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"wangqiang", @"name", @"nan", @"gender", @18, @"age", nil];
NSLog(@"%@", mdic1);

NSMutableDictionary *mdic2 = [[NSMutableDictionary alloc]initWithObjects:@[@"wangqiang", @"nan", @18]forKeys:@[@"name", @"gender", @"age"]];
NSLog(@"%@", mdic2);
NSMutableDictionary *mdic3 = [NSMutableDictionary dictionaryWithObject:@[@"zhangsan", @"boy", @18] forKey:@[@"name", @"sex", @"age"]];
NSLog(@"%@", mdic3);
//2.添加,修改键值对
//如果key值存在,修改key对应的object数据
//如果key值不存在,添加键值对
[mdic addEntriesFromDictionary:@{@"address" : @"qinghe"}];
NSLog(@"%@", mdic);
[mdic1 setObject:@14 forKey:@"class"];
NSLog(@"%@", mdic1);

[mdic1 setValue:@"清河大厦" forKey:@"address"];
NSLog(@"%@", mdic1);
[mdic1 setValue:@"金五星" forKey:@"address"];
NSLog(@"%@", mdic1);

/*
setValue: forKey: 的key参数类型必须是NSString *
setObject: forKey: 的key参数类型可以是任意类型的对象

setValue: forKey: 是NSObject对象的方法, 也就是说所有的OC对象都有这个方法
setObject: forKey: 是NSMutableDictionary类中特有的方法

*/

//3.删除
[mdic1 removeObjectForKey:@"address"];
NSLog(@"%@", mdic1);
//删除所有内容
[mdic1 removeAllObjects];
NSLog(@"%@", mdic1);

//NSSet 集合(元素不可以重复,无序存放)
//创建一个set对象

NSSet *set = [NSSet setWithObjects:@"liuyang", @"wangzhiting", @"wangqiang", @"yvejianhua", @"liuyang", nil];
NSLog(@"%@", set);

//任意取出一个元素
NSString *str = [set anyObject];
NSLog(@"str = %@", str);

//取出所有的元素
NSArray *array = [set allObjects];
NSLog(@"%@", array);

//获取集合中元素的个数
NSLog(@"%lu", set.count);

//判断对象是否在集合中
BOOL isHave = [set containsObject:@"liuyang"];
NSLog(@"%d", isHave);

//NSMutableSet 可变的集合
//创建对象
NSMutableSet *mset = [NSMutableSet setWithObjects:@"zhangmingjie", @"wangzhizhun", nil];

//添加对象
[mset addObject:@"-1"];
NSLog(@"%@", mset);

//删除对象
[mset removeObject:@"-1"];
NSLog(@"%@", mset);

时间: 2024-10-14 02:16:12

objective_c 之集合的相关文章

数组、字符串、集合

数组与集合的转换.数组与字符串的转换 ========数组变集合 String[] arr = {"abc","cc","kkkk"}; //把数组变成list集合有什么好处? /* 可以使用集合的思想和方法来操作数组中的元素. 注意:将数组变成集合,不可以使用集合的增删方法. 因为数组的长度是固定. contains. get indexOf() subList(); 如果你增删.那么会产生UnsupportedOperationExcepti

C#语言中数组和集合

数组.集合→用于储存多个同类型的数据数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快集合 不定长→保存的数据数量,可以在程序的执行过程中,发生变化 占用内存多 便利速度慢课时六:数组和集合 数组.集合→用于储存多个同类型的数据 数组 定长→用于保存固定数量的数据 在功能上,数组能实现的所有功能,集合都能实现:反之,集合能实现的某些功能,数组难以实现 占用内存少 便利速度快 集合 不定长→保存的数据数

通过反射了解集合泛型的本质

通过反射了解集合泛型的本质 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通过反射了解集合泛型的本质 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(

Java 之集合

collection(单列集合) List(有序,可重复) ArrayList     底层数据结构是数组,查询快,增删慢,线程不安全,效率高 Vector     底层数据结构是数组,查询快,增删慢,线程安全,效率低 LinkedList  底层数据结构是链表,查询慢,增删快,线程不安全,效率高 Set(无序,唯一) HashSet   底层数据结构是哈希表,依赖hashCode()和equals() 执行顺序:判断hashCode()是否相同,相同继续执行equals(),返回true不添加

集合和三元运算符

一.三元运算符 如下判断可以使用三元运算更方便的实现: a = 1b = 2 if a > 1: c = aelse: c = b 和下面是一样的: a = 1b = 2#下面这个c = a if a>1 else b 如下两种方法也是一样的:方式一: s=[]nums = list(range(1,11))for i in nums: if i%2==0: s.append(i)print(s)方式二:ss = [i for i in nums if i%2==0]print(ss)#这两种

集合函数 day4

1.集合 通过set强制转换,或者直接定义 1 nums = [0, 2, 4, 6, 8]#两种格式,带大括号与带中括号的 2 print(type(nums)) 3 aa = {0, 8, 2, 4, 6}#需要注意与字典的区别,字典是有分号的 2.交集

js算法集合(一) 水仙花数 及拓展(自幂数的判断)

js算法集合(一) ★ 最近有些朋友跟我说对js中的一些算法感到很迷惑,知道这个算法到底是怎么回事,但是就是不会用代码把它写出来,这里我跟大家分享一下做水仙花数的算法的思路,并对其扩展到自幂数的算法,希望能对大家有所帮助. 1.验证一个数是否为水仙花数 ①要写水仙花数的算法,我们首先来了解一下什么是水仙花数,水仙花数是指一个 3位正整数 ,它的每个位上的数字的 3次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153): ②了解了什么是水仙花数我们就开始分析该怎么下手.通过定义来看

笔记:多线程-集合

阻塞队列(BlockingQueue) 当试图向队列添加元素而队列已满,或是想从队列移除元素而队列为空的时候,阻塞队列导致线程阻塞,阻塞队列接口定义如下,他继承Queue<E>接口: public interface BlockingQueue<E> extends Queue<E> { ????/** ???? * 添加一个元素,如果队列满,则抛出 IllegalStateException异常 ???? */ ????????boolean add(E e); ??

SQL入门之集合操作

尽管可以在与数据库交互时一次只处理一行数据,但实际上关系数据库通常处理的都是数据的集合.在数学上常用的集合操作为:并(union),交(intersect),差(except).对于集合运算必须满足下面两个要求: 两个数据集合必须具有同样数目的列 连个数据集中对应列的数据类型必须是一样的(或者服务器能够将其中一种类型转换为另一种类型) SQL语言中每个集合操作符包含两种修饰:一个包含重复项,另一个去除了重复项(但不一定去除了所有重复项). 0.union操作符 union和union all操作