OC_学习_数组,字典,集合

原创 2013年12月06日 12:14:55
//
//  main.m
//  OC_学习_数组等等
//
//  Created by binMac on 13-12-6.
//  Copyright (c) 2013年 bin-mac. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    //初始化一个数组
    NSArray *array1 = [NSArray arrayWithObject:@"bin"];
    NSLog(@"array = %@",array1);//arrayWithObject只能添加一个元素
    
    NSArray *array2 = [NSArray arrayWithObjects:@"bin",@"ban", nil];//arrayWithObjects可以添加多个元素,且nil,不能删除
    NSLog(@"array = %@",array2);

    //用另一个数组初始化一个数组
    NSArray *array3 = array2;
    NSLog(@"array = %@,%p,%p",array3,array3,array2);
    NSArray *array3b = [NSArray arrayWithArray:array3];
    NSLog(@"array = %@,%p,%p",array3b,array3b,array2);
    
    //求数组的元素
    NSInteger arrayCount = [array3 count];
    NSLog(@"这个数组的元素有 %ld",arrayCount);
    
    //通过下标取数组的元素
    NSString *str = [array3 objectAtIndex:1];
    NSLog(@"str = %@",str);
    
    //追加数组元素
    NSArray *array4 = [array3 arrayByAddingObject:@"bgn"];//(一个元素)
    NSLog(@"array4 = %@",array4);
    NSArray *array5 = [array3 arrayByAddingObjectsFromArray:array1 ];//追加一个数组
    NSLog(@"array5 = %@",array5);
    
    
    //components  成分,
    //用指定的字符串将数组中的元素连接起来变为一个字符串
    NSString *str2 = [array5 componentsJoinedByString:@"*"];
    NSLog(@"str2 = %@",str2);
    
    //判断数组中是否含有一个对象
    BOOL isContain = [array5 containsObject:@"bin"];
    NSLog(@"isContain = %d",isContain);
    
    //判断一个是元素在数组中的下标
    NSInteger index = [array4 indexOfObject:@"bin" inRange:NSMakeRange(0, 1)];//可以不用inrange,在指定范围内存在的话就返回正确的值,
    NSLog(@"index = %ld",index);
    
    //可变数组--------------
    NSMutableArray *marray1 = [NSMutableArray array];//空数组
    NSLog(@"marray1 = %@",marray1);
    
    NSMutableArray *marray2 = [NSMutableArray arrayWithCapacity:6];//告诉编译器大概有6个元素,方便内存优化
    NSLog(@"marray2=%@",marray2);
    
    //添加元素
    NSMutableArray *marray3 = [NSMutableArray arrayWithObjects:@"a",@"b",@"c",nil];
    NSLog(@"marray = %@",marray3);
    
    [marray3 addObject:@"d"];//在后面追加一个元素
    [marray3 insertObject:@"e" atIndex:3];//在指定位置添加一个元素
     NSLog(@"marray = %@",marray3);
    [marray3 removeObject:@"e"];//删除指定对象
    
    //数组的遍历
    for (int i = 0; i < [marray3 count]; i ++) {
        NSString *str = [marray3 objectAtIndex:i];
        NSLog(@"str = %@",str);
    }//上面的方法效率很低
    
    for (NSString *str3 in marray3) {
        NSLog(@"str3 = %@",str3);//在这里面不能修改数组的元素,无论增删改
    }
//    for in实际上是快速枚举,跟for循环意义上还是有区别的。
//    NSArray的枚举操作中有一条需要注意:对于可变数组进行枚举操作时,你不能通过添加或删除对象这类操作来改变数组容器。如果你这么做了,枚举器会很困惑,而你将得到未定义的结果。
    
    
    
    //字典
    //字典是以键值对的形式存在的,并且键值是成对出现的,不会单独只有键或只有值(字典的打印使用{},表示的)
    
    //初始化一个字典
    NSDictionary *dic1 = [NSDictionary dictionaryWithObjectsAndKeys:@"a",@"k1",@"b",@"k2",@"c",@"k3", nil];
    NSLog(@"dic1 = %@",dic1);//必须成对初始化
    
    //输出字典的数量
    NSLog(@"这个字典的数量 = %lu",[dic1 count]);//%ld  也可以输出
    
    //获取全部的key和object
    NSArray *keyarray=[dic1 allKeys];
    NSArray *valuearray=[dic1 allValues];
    NSLog(@"keyarray=%@,valuearray=%@",keyarray,valuearray);
    
    
    //可变字典
    NSMutableDictionary *mdic=[[NSMutableDictionary alloc]initWithObjectsAndKeys:@"iphone",@"k1",@"ipad",@"k2",@"pro",@"k3",@"ari",@"k4", nil];
    NSLog(@"mdic=%@",mdic);
    
    //把一个字典添加到另外一个字典后面
    NSDictionary *dic4=[NSDictionary dictionaryWithObject:@"mini" forKey:@"k5"];
    //可变字典的追加
    [mdic addEntriesFromDictionary:dic4];
    //直接添加键值对
    [mdic setValue:@"ipod" forKey:@"k6"];
    //通过key删除指定的value
    [mdic removeObjectForKey:@"k6"];
    //删除所有
//    [mdic removeAllObjects];
//     NSLog(@"mdic=%@",mdic);
    
    //批量删除一个字典内容
    NSArray *arrayk=[NSArray arrayWithObjects:@"k3",@"k4",@"k5", nil];
    [mdic removeObjectsForKeys:arrayk];
    NSLog(@"mdic=%@",mdic);

    //----字典的遍历-----//从后面开始遍历
    for (id key in mdic) {
        id object = [mdic objectForKey:key];
        NSLog(@"value = %@",object);
    }
    
    //NSSet集合
    //NSSet集合跟数组差不多,只不过集合中不能存放相同的对象.是一组单值对象的集合,并且被存入集 中的元素是无序的,同样也有NSMutableSet和NSSet;
    NSSet *set1 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb",@"ccc", nil];
    NSSet *set2 = [[NSSet alloc] initWithObjects:@"aaa",@"bbb", nil];
    NSLog(@"set1 = %@",set1);//打印形式set = {()}
    
    //判断一个集合时候包含某个元素
    BOOL isContain1 = [set1 containsObject:@"aaa"];
    NSLog(@"isContain1 = %d",isContain1);
    
    //判断集合是否有交集
    BOOL isIntersert = [set1 intersectsSet:set2];
    NSLog(@"isIntersert = %d",isIntersert);
    
    //判断集合中得元素是否一样
    BOOL isEqual = [set2 isEqualToSet:set1];
    NSLog(@"isEqual = %d",isEqual);
    
    //判断set1是否为set2的子集
    BOOL isSubSet = [set2 isSubsetOfSet:set1];
    NSLog(@"isSubSet = %d",isSubSet);
    
    //向一个集合中追加一个元素
    NSSet *set3 = [set1 setByAddingObject:@"ddd"];
    NSLog(@"set3 = %@",set3);

    
    NSMutableSet *set4 = [NSMutableSet setWithObjects:@"1",@"2", nil];
    NSMutableSet *set5 = [NSMutableSet setWithObjects:@"1",@"3", nil];

    [set4 intersectSet:set5];//并集   set4 = {(1)}
    NSLog(@"set4 = %@",set4);
    [set4 unionSet:set5];
    NSLog(@"set4 = %@",set4);
    
    //[set4 minusSet:set5];//set4将去除set5中相同的元素
    //NSLog(@"set4 = %@",set4);
    
    return 0;
}



                

数组,字典,集合的关系

数组,字典,集合: 这些集合类只能容纳cocoa对象(NSOjbect对象),都是大容器,如果想保存一些原始的C数据(例如,int, float, double, BOOL等),则需要将这些原始的...
  • lixiaoshuai150
  • lixiaoshuai150
  • 2014年08月17日 20:18
  • 962

集合_数组_字典

//    数组 (NSArray) //    系统提供的数组类 - 类似于C语言中的数组 //    OC中的数组是一个大容器,数组可以存放不同类型的对象且只能保存对象 // ...
  • RunningZero
  • RunningZero
  • 2016年02月04日 19:19
  • 878

IOS 中数组、集合、字典的使用(NSArray, NSSet, NSDictionary)

NSArray 用于对象有序集合(数组) NSSet 用于对象无序集合(集合) NSDictionary用于键值映射(字典) 以上三种集合类是不可变的(一旦初始化后,就不能改变) 以下...
  • u014709660
  • u014709660
  • 2014年07月04日 09:45
  • 1157

字典,数组,集合区别

1.不可变数据字典(NSDicionary) 字典:用来存储具有一一对应关系的数据. 一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多...
  • sinat_28435505
  • sinat_28435505
  • 2015年06月20日 15:46
  • 365

python 列表list 元组tuple 字典dict 集合set 介绍

序列序列的两个特点: 1.索引操作符,从序列中抓取一个特定项目 2.和切片操作符,获取序列的一个切片,即一部分序列列表、元组和字符串都是序列,字符串是字符的序列,列表和元祖是任意类型的序列列表li...
  • z_johnny
  • z_johnny
  • 2016年03月17日 16:20
  • 7036

【学习ios之路:Objective-C】字典.集合.

1.不可变数据字典(NSDicionary) 字典:用来存储具有一一对应关系的数据. 一个key 对应一个 value ,key起到了唯一标示的作用,key必须是唯一的,但是一个vlaue可以对应多个...
  • ZFX5130
  • ZFX5130
  • 2015年01月01日 22:14
  • 1462

excel VBA 字典与集合(Dictionary与Collection)

Dictionary对象将替换Collection对象,并提供附加的语言从而使增加和删除记录的速度比以前提高三倍,虽然Visual Basic 6.0只有很少的新特点,但是具有某些功能强大的新的对象模...
  • kaifeng2988
  • kaifeng2988
  • 2015年12月18日 18:19
  • 3358

shell 中数组学习

由于应用shell的时间不是太长,对于数组在实际项目中没有接触过,今天在需要把类似于:a=1,2,3,4这样的东西转换。之前用的方法是用awk,分别取出。所以今天想是否有更好更简洁的方法----就想到...
  • richerg85
  • richerg85
  • 2014年06月10日 19:50
  • 3969

Python中列表/元组/集合/字典的理解

1 列表/元组/集合/字典的理解 (1)列表是任意对象的序列。列表用方括号表示。 (2)将一组值打包到一个对象中,称为元组。元组用圆括号表示。元组和列表的大部分操作相同。但是,列表是不固定的,可以随时...
  • shenwanjiang111
  • shenwanjiang111
  • 2015年08月28日 16:08
  • 2956

Swift数组、字典和集合

原文出自:标哥的技术博客 前言Swift语言提供Array、Set和Dictionary三种基本的集合类型用来存储集合数据。数组是有序的数据集;集合是无序无重复的数据集;而字典是无序的键值对数组集。S...
  • woaifen3344
  • woaifen3344
  • 2016年01月08日 11:53
  • 9074
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC_学习_数组,字典,集合
举报原因:
原因补充:

(最多只允许输入30个字)