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;
}



                    

相关文章推荐

OC第五天-字典,集合,数组排序

字典、集、数组排序:字典类、集合类、数组数组排序、字典、集合的快速遍历、数组排序#import //定义一个排序的条件的函数 NSInteger sort1 (id s1, id s2, void ...

oc 数组,字典,集合 库方法练习

July 31,2014 "99752" snippet_file_name="blog_20131206_1_6122411" name="co...
  • holyjoy
  • holyjoy
  • 2014年07月31日 23:32
  • 555

❀自我唠嗑OC-数组类,字典类,集合类

OC数组 OC字典 OC集合

OC初学必看,字符串,数组,字典,集合,NSNumber 等的简单操作

//1.实例化一个字符串对象     NSString *newString = [[NSString alloc]initWithFormat:@"abc蓝鸥科技ios15班!"];     ...

OC中数组、字典、集合常用方法的运用

/* ====================== 一 NSArray========================          1.创建对象

OC - 第五章 集合 ( 数组、字典、集合 )

// OC中存储数据的容器类叫做集合(Collection):包括三个类{ 数组 字典 集合(NSSet)// 可变可以增加和删除里面的对象,不可变不行,一般情况下用可变 // 可变继承不可变 不可变...

OC创建字典,数组

/* 4 创建大量字典 传入两个数组,key和obj,数组元素个数未知。创建大量字典,字典的个数与key和obj中元素较少的一个数组的元素个数相同。key中第i个元素和obj中第i个元素组成键值对...

oc中数组与字典的总结

在oc中数组定义的两个类,分别为:NSArray与NSMutableArray。NSArray是静态的,而NSMUtableArrary是动态数组。他们的一些使用如下: oc数组特点: 1....

OC习题 -- 切分字符串 处理色值和名称 (知识点: 字典,枚举,数组,字符串)

/* 处理工程文件crayons.txt中的文本信息,文本内容是关于颜色的,每行都是一 个颜色的信息,例如:Almond #EED9C4,前⼀一个字符串是颜色的名称,后一 个字符串是颜⾊色的16进制色...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OC_学习_数组,字典,集合
举报原因:
原因补充:

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