OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏
==============NSArray(不可变数组)===========
NSArray,继承自NSObject 用来管理(储存)一些有序的对象,不可变数组.
创建一个空数组
NSArray *array1=[[NSArray alloc]init]; //NSArray *array2=[NSArray array];
nil 数组结束标志
NSArray *array3=[[NSArray alloc]initWithObjects:@"rose",@"jack",nil,@"tom",@"jerry",nil];
// 通过下标访问数组中的元素(因为数组中的对象是有序的,下标也是从0开始)
NSString *str=[array4 objectAtIndex:2]; //获取下标为2的数组元素
NSString *str1=[array4 firstObject]; //获取第一个对象(下标就是0)
NSString *str2=[array4 lastObject]; //获取最后一个对象
NSUInteger cou=[array4 count]; // 获取数组中元素的个数
===============NSMutableArray(可变数组)==============
//NSMutableArray 可变数组(空间大小可变)
创建一个可变数组
NSMutableArray *mArray=[[NSMutableArray alloc]initWithCapacity:0];
想数组中添加对象
[mArray addObject:@"天湖"];
NSLog(@"%@",mArray);//打印的是编码,可以通过遍历数组获取元素中的汉字
for (NSUInteger i=0; i<[mArray count];
i++) {
NSLog(@"%@",[mArray objectAtIndex:i]); //打印的是数组元素
}
---------------------------------------------------------------------
用一个数组为另一个数组添加元素
NSMutableArray *array5=[NSArrayarrayWithObjects:@"1",@"2",@"3",@"4",nil];
NSMutableArray *mArray3=[[NSMutableArray
alloc]initWithCapacity:0];
// 用一个数组为另一个数组添加元素
[mArray3 addObjectsFromArray:array5];
NSLog(@"%@",mArray3);
//在某个位置插入一个元素
[mArray3 insertObject:@"*1*" atIndex:0];
NSLog(@"%@",mArray3);
//删除指定位置的数组元素
[mArray3 removeObjectAtIndex:1];
//直接删除某个元素
[mArray3 removeObject:@"3"];
// 删除最后一个元素
[mArray3 removeLastObject];
// 清空数组
[mArray3 removeAllObjects];
交换数组元素位置
NSMutableArray *mArray4=[NSMutableArrayarrayWithObjects:@"iPhone",@"iPod",@"iwatch",@"iTouch",@"mac",nil];
[mArray4 exchangeObjectAtIndex:1withObjectAtIndex:2];
//遍历数组
// 快速枚举 (增强型for循环)
// OC中提供快速遍历集合的循环,使用forin遍历数组,不需要关心数组的个数.
// 每一次循环都把当前元素的值赋值给变量,如NSString *str中的str
// 在内部添加NSLog的语句,或者其他的功能语句
for (NSString *strin mArray4) {
NSLog(@"%@",str);
// [mArray4 removeObjectAtIndex:0]; //error.注意在快速枚举中,不能对数组元素做修改操作,如:删除某个元素
}
//数组排序
NSArray *sortArray=[mArray4 sortedArrayUsingSelector:@selector(compare:)]; //@selector()选择器,()内写方法
for (NSString *strin sortArray) {
NSLog(@"%@",str);
}
==================NSDictionary(不可变字典)=================
//NSDictionary,不可变字典,继承自NSObject
// 字典中存储的元素都是以键值对的形式存在,key值必须是唯一,且不能重复;
// 1.存储的元素都是无序的
// 2.存储的是key/value(键值对)
// 3.字典创建都是以nil结束
// 4.value必须是对象,key一般是字符串
// 注意:创建时,value在前,key在后,字典是无序的.(打印出来是key在前,value在后)
创建字典
NSDictionary *dic=[[NSDictionaryalloc]initWithObjectsAndKeys:@"xiaoming",@"name",
@"18",@"age",
@"man",@"sex",nil];
// 通过key访问value
NSString *str3=[dic
objectForKey:@"age"];
// 获取所有的value值
NSArray *values=[dic
allValues];
// 获取所有的key值
NSArray *keys=[dic allKeys];
// 获取字典中键值对的个数
NSUInteger count=[dic
count];
//遍历字典1
for (NSString *key in dic) {//快速枚举枚举的是字典中的key值
NSLog(@"%@=%@",key,[dicobjectForKey:key]);
}
//遍历字典2
for (NSInteger i=0; i<count; i++) {
NSString *key=[[dic allKeys]objectAtIndex:i];//allKeys先行获取所有key(一个数组),objectAtIndex得到每个key
NSString *value=[dic objectForKey:key];//通过key得到value值
NSLog(@"%@=%@",key,value);
}
//遍历字典3
for (NSString * keyin [dic allKeys])
{
NSLog(@"%@=%@",key,[dic valueForKey:key]);
}
=========================NSMutableDictionary(可变字典)==================
/创建一个可变字典
NSMutableDictionary *mDic=[[NSMutableDictionary alloc]initWithDictionary:0];
//添加
[mDic setObject:@"chengyixun"forKey:@"singer"];
// 修改key对应的value
[mDic setObject:@"zhouzhou""forKey:@"singer"];
// 删除键值对
[mDic removeObjectForKey:@"zhouzhou"];
//清空字典
[mDic removeAllObjects];
====================NSSet集(不可变)============================
// NSSet 继承自NSObject,不可变集合,类似于数学中的集合
// 1.集合是无序的
// 2.集合中的元素是唯一的(不可重复)
// 空集合 {( )}
NSSet *set=[[NSSet alloc]init];
NSSet *set1=[NSSet set];
// 可以通过把数组转换为集合来去重
NSArray *a1=[[NSArray alloc]initWithObjects:@"1",@"1",@"1",@"2",nil];
NSSet *set3 = [[NSSet alloc]initWithArray:a1];
NSLog(@"%@",set3); // 1 2
//访问集合中的元素
NSArray *array10=[set3 anyObject]
// 集合中元素的个数
NSLog(@"%lu",[set3 count])
// 判断某个元素释放存在于集合中
NSSet *set4=[NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",nil];
BOOL b=[set4 containsObject:@"9"];
// 判断一个集合是否是另一个集合的子集
NSSet *set5=[NSSet setWithObjects:@"1",@"2",@"8",nil];
if ([set5 isSubsetOfSet:set4]) {
NSLog(@"是");
}else{
NSLog(@"不是");
}
// 判断两个集合是否相等
if ([set5 isEqualToSet:set4]) {
NSLog(@"相等");
}else{
NSLog(@"不等");
}
// 判断两个集合是否有交集
if ([set5 intersectsSet:set4]) {
NSLog(@"有交集");
}else{
NSLog(@"无交集");
}
=================NSMutableSet集(不可变)=================
创建一个可变的集
NSMutableSet *mSet=[[NSMutableSet alloc]initWithCapacity:0];
// 添加元素
[mSet addObject:@"macangyou"];
// 删除元素
[mSet removeObject:@"macangyou"];
// 清空集合
[mSet removeAllObjects];
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>总结<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
// 1.NSArray是有序的,NSDictionary和NSSet是无序的
// 2.NSArray通过下标访问,NSDictionary是通过key值来访问元素,NSSet随机访问
// 3.NSArray数组中的元素可以相同,NSDictionary的key必须唯一,NSSet元素唯一
// 4.显示格式
/*
NSArray (元素1,元素2,...)
NSDictionary{key1=value1;key2=value2;....}
NSSet {(元素1,元素2,...)}
*/
// 注意:NSArray和NSDictionary经常嵌套使用
版权声明:本文为博主原创文章,未经博主允许不得转载。
OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏的更多相关文章
- shell入门之函数应用 分类: 学习笔记 linux ubuntu 2015-07-10 21:48 77人阅读 评论(0) 收藏
最近在学习shell编程,文中若有错误的地方还望各位批评指正. 先来看一个简单的求和函数 #!/bin/bash #a test about function f_sum 7 8 function f ...
- linux中的网络通信指令 分类: 学习笔记 linux ubuntu 2015-07-06 16:02 134人阅读 评论(0) 收藏
1.write write命令通信是一对一的通信,即两个人之间的通信,如上图. 效果图 用法:write <用户名> 2.wall wall指令可将信息发送给每位同意接收公众信息的终端机用 ...
- linux常用的压缩与解压缩命令 分类: 学习笔记 linux ubuntu 2015-07-05 19:38 38人阅读 评论(0) 收藏
1.gzip 压缩 gzip 是压缩文件,压缩之后文件后缀为.gz 用法:gzip 选项 [文件] 2.gunzip 解压 这个命令与gzip的功能刚好相反,这个是解压. 用法 gunzip 选项 [ ...
- ubuntu14.04使用root用户登录桌面 分类: 学习笔记 linux ubuntu 2015-07-05 10:30 199人阅读 评论(0) 收藏
ubuntu安装好之后,默认是不能用root用户登录桌面的,只能使用普通用户或者访客登录.怎样开启root用户登录桌面呢? 先用普通用户登录,然后切换到root用户,然后执行如下命令: vi /usr ...
- linux中echo的用法 分类: 学习笔记 linux ubuntu 2015-07-14 14:27 21人阅读 评论(0) 收藏
1.echo命令我们常用的选项有两个,一个是-n,表示输出之后不换行,另外一个是-e,表示对于转义字符按相应的方式处理,如果不加-e那么对于转义字符会按普通字符处理. 2.echo输出时的转义字符 \ ...
- shell脚本调试 分类: 学习笔记 linux ubuntu 2015-07-14 12:49 53人阅读 评论(0) 收藏
1.sh -x script 这将执行脚本并显示所有变量的值 如,脚本: #!/bin/bash #a test about shift if [ $# -le 0 ] then echo " ...
- shell入门之流程控制语句 分类: 学习笔记 linux ubuntu 2015-07-10 16:38 89人阅读 评论(0) 收藏
1.case 脚本: #!/bin/bash #a test about case case $1 in "lenve") echo "input lenve" ...
- shell入门之变量测试 分类: 学习笔记 linux ubuntu 2015-07-10 15:49 31人阅读 评论(0) 收藏
格式:test 测试条件 字符串测试: 注意空格: test str1 == str2 测试字符串是否相等 test str1 != str2 测试字符串是否不相等 test str1 测试字符串是否 ...
- shell脚本实现冒泡排序 分类: 学习笔记 linux ubuntu 2015-07-10 14:16 79人阅读 评论(0) 收藏
手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...
随机推荐
- C#在服务端验证客户端证书(Certificate)
使用https协议进行通讯的时候可以设置双向证书认证,客户端验证服务端证书的方法前面已经介绍过了,现在说一下在服务端验证客户端证书的方案. 这里给出的方案比较简单,只需要在Service端的配置文件中 ...
- python 文件分割
import sys,os def split(fromfile,todir,chunksize): partnum = inputfile = open(fromfile,'rb')#open th ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)E 恋与程序员
https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: #include<bits/stdc++.h> using namespace ...
- javascript异步编程方案汇总剖析
code[class*="language-"] { padding: .1em; border-radius: .3em; white-space: normal; backgr ...
- 寻找重复的子树 Find Duplicate Subtrees
2018-07-29 17:42:29 问题描述: 问题求解: 本题是要求寻找一棵树中的重复子树,问题的难点在于如何在遍历的时候对之前遍历过的子树进行描述和保存. 这里就需要使用之前使用过的二叉树序列 ...
- Java 集合-集合介绍
2017-10-30 00:01:09 一.Java集合的类关系图 二.集合类的概述 集合类出现的原因:面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类. ...
- 流氓 2345.com的新动态及解决方法
安装了[电脑公司]的Win7_SP1之后, IE的主页被绑架. 症状是先转到 IE959.com,然后自动跳转到 www.2345.com 网上当然有很多例子了,可是都没有效果. 1. 更改IE设置没 ...
- border可以这样给控件加边框
<Border.BorderBrush> <SolidColorBrush Color="Red" Opacity="0" / ...
- English trip V1 - 1.How Do You Feel Now? Teacher:Lamb Key:形容词(Adjectives)
In this lesson you will learn to describe people, things, and feelings.在本课中,您将学习如何描述人,事和感受. STARTER ...
- codeforces 993c//Careful Maneuvering// Codeforces Round #488 by NEAR (Div. 1)
题意:x轴-100和+100的有敌人飞船,纵坐标由输入数据给出,我方有2飞船在x轴0,y坐标待定.0时刻时敌人同时向我方2飞船发出光线,光线会穿透飞船打到敌人自己,问2飞船放在哪敌人损失最大? 假如- ...