OC05 字典/数组
来源:互联网 发布:nfc读卡软件 编辑:程序博客网 时间:2024/05/20 10:22
//
// main.m
// OC05 字典、集合、数组排序
//
// Created by xalo on 15/10/30.
// Copyright (c) 2015年 康大亮. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc,const char * argv[]) {
#pragma mark -字典类
/*
1、字典就是关键字以及存储的数值的集合,字典在每个给定的关键字下存储一个数值。关键字称为key,数值称为value,合成键值对。因此字典就是管理多个键值对的集合。字典可以管理多个键值对。
2、key常常是NSString类型的字符串(也可用int类型的数),但是value必须是对象
3、键值对在字典中是没有顺序的
4、字典的key不能重复,否则在取值是,会产生歧义
5、如果有大量数据或频繁查找信息时,使用字典效率较高
*/
#pragma mark --创建一个不可变字典NSDictionary
/* 1.这种方式创建的字典需要写“一个value+一个key”这样的顺序添加键值对。
* 2.向字典中添加键值对时,value可以为空,但是不能存在value没有key对应的情况。(也就是:key-value必须成对出现)。
*/
NSDictionary *dict = [[NSDictionaryalloc] initWithObjectsAndKeys:@"jiMIng",@"name", @"M",@"gender", nil];
NSLog(@"%@", dict);
/* 结果:{
gender = M;
name = jiMIng;
}*/
#pragma mark --使用数组创建字典对象
// 创建出key值数组
NSArray *keyArray = [NSArrayarrayWithObjects:@"name",@"age", @"hobby",nil];
//创建出value值数组,value值的数组元素必须和key数组元素一一对应
NSArray *valueArray = [NSArrayarrayWithObjects:@"riTian",@"23", @"fuckSky",nil];
//使用数组创建字典的方法创建字典对象
NSDictionary *dict1 = [[NSDictionaryalloc] initWithObjects:valueArrayforKeys:keyArray];
NSLog(@"%@", dict1);
#pragma mark --使用一个已知的字典创建新字典
NSDictionary *dict2 = [[NSDictionaryalloc] initWithDictionary:dict1];
NSLog(@"%@", dict2);
#pragma mark --创建一个可变字典
NSMutableDictionary *mDict = [NSMutableDictionarydictionaryWithDictionary:dict2];
NSLog(@"%@", mDict);
#pragma mark -字典的操作
#pragma mark --获取所有的key值,返回值是数组类型
NSArray *keyArray1 = [mDict allKeys];
NSLog(@"%@", keyArray1);
#pragma mark --获取所有的value值,返回值是数组类型
NSArray *valueArray1 = [mDict allValues];
NSLog(@"%@", valueArray1);
#pragma mark --通过key值取value
id value = [mDictobjectForKey:@"name"];// 由于不知道所取的value是什么类型,所以使用id泛型,且使用%@输出
NSLog(@"%@", value);
#pragma mark --给可变字典添加键值对方法
[mDict setObject:@"HighNewArea"forKey:@"address"];
NSLog(@"%@", mDict);
#pragma mark --修改可变字典的value方法
//修改可变字典的value和给字典添加新建值对的方法一样。如果key值以前没有,则该方法是删除方法,如果key值之前存在,则该方法是修改value方法
[mDictsetObject:@"0"forKey:@"age"];
NSLog(@"%@", mDict);
#pragma mark --删除可变字典的键值对方法
// 根据key值来删除key所对应的value
[mDict removeObjectForKey:@"age"];
NSLog(@"%@", mDict);
//将若干个key封装在一个数组中,然后作为参数传入,删除方法会根据数组中的key是年初对应的value
[mDict removeObjectsForKeys:[NSArrayarrayWithObjects:@"address",@"hobby", nil]];
NSLog(@"%@", mDict);
#pragma mark --删除可变字典中的全部value
[mDict removeAllObjects];
NSLog(@"%@", mDict);
#pragma mark -字典的遍历
// 创造一个字典
NSDictionary *dict0 = [NSDictionarydictionaryWithObjectsAndKeys:@"1",@"a", @"2",@"b", @"3",@"c", @"4",@"d", @"5",@"e", nil];
NSLog(@"字典顺序%@", dict0);
// 遍历
// 1、获取到所有的key,并且拿到key的个数
// NSArray *allKeys = [dict0 allKeys];// 【注意】使用allkeys方法取key值,并不是按照打印字典key-value的顺序取值的!
NSArray *allKeys = dict0.allKeys;// .语法
NSLog(@"所有的key:%@", allKeys);
// 2、使用for循环遍历字典
for (int i =0; i < [allKeys count]; i++) {
//2.1 获取到key
NSString *key = [allKeys objectAtIndex:i];
//2.2 根据获取到的key访问value
NSString *value = [dict0 objectForKey:key];
NSLog(@"key = %@, value = %@", key, value);
}
// lianxi:使用字典表示一个城市的区,区名和人口数
NSDictionary *yanTaArea = [NSDictionarydictionaryWithObjectsAndKeys:@"yanTaArea",@"areaName", @"100000",@"peopleCount", nil];
NSLog(@"%@", yanTaArea);
NSDictionary *xinChengArea = [NSDictionarydictionaryWithObjectsAndKeys:@"xinChengArea",@"areaName", @"200000",@"peopleCount", nil];
NSLog(@"%@", xinChengArea);
//用字典表示一个城市:城市名和所有的市区
//
NSArray *arrayCity = [NSArrayarrayWithObjects:yanTaArea, xinChengArea, nil];
NSDictionary *xiAnCity = [NSDictionarydictionaryWithObjectsAndKeys:arrayCity, @"xiAnCity", nil];
NSLog(@"%@", xiAnCity);
// 定义一个渭南city
NSDictionary *weiNanCity = [NSDictionarydictionary];
//使用字典表示一个省:省的名称和所有的城市
//将两个城市字典作为数组元素存进数组元素里
NSArray *cityArray = [NSArrayarrayWithObjects:xiAnCity, weiNanCity ,nil];
// 创建省份字典
NSDictionary *provinceDict = [NSDictionarydictionaryWithObjectsAndKeys:@"shanXi",@"provinceName",cityArray,@"cityName",nil];
NSLog(@"%@", provinceDict);
return 0;
}
- OC05 字典/数组
- OC05 -- 数组
- iOS OC05.2_数组
- 【OC05-1】字典、可变字典 (连载六)
- OC05 集合
- 字典数组
- 省市区 数组套字典 字典套数组
- OC05核心语法总结 2
- OC05 for_in快速遍历技术
- jquery数组字典和数组
- Javascript 数组与字典
- 数组,字典,集合
- OC数组字典集合
- iOS:字典数组排序
- IOS数组,字典基础知识
- 数组 字典 复习
- OC 数组、字典转换
- 字典树数组实现
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- OC04 NSString、NSArray、NSNumber-2
- 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁
- 黑马程序员--继承和抽象类
- Caused by: java.lang.UnsupportedOperationException
- OC05 字典/数组
- Android APP开发流程
- OC05 集合
- Android Volley 网络请求框架图
- OC05 for_in快速遍历技术
- SVN用命令注册Window服务
- 桥接模式与适配器模式辨析
- KMP模板
- OC06 Block