Object-C中的集合类

原创 2015年11月18日 19:29:46
oc中的集合类
分类:程序语言|标签:IOS|日期: 2015-03-07 02:00:15
OC中的集合有:NSArray 数组 NSDictionary 字典 NSSet 集合

第一:NSArrary

1.1:集合的基本方法

//1.创建集合
//NSArray 是不可变数组,一旦创建完成就不能够对数组进行,添加,删除等操作
NSArray * array = [[NSArray alloc] init];

  //2.通过构造方法的方式创建一个NSArray
  //在创建一个NSArray的时候,集合的最后一个元素一定是nil,判断nil决定集合的结尾
NSArray * array1 = [NSArray arrayWithObjects:@"one",@"two",@"three", nil];
NSArray * array2 = [[NSArray alloc] initWithObjects:@"one",@"two",number, nil];
NSArray * karray = @[@"a",@"b",@"c"];
NSString * kstr = karray[0];//访问元素位置
//数组的index时从0开始的
NSString * str = [array objectAtIndex:0];
NSLog(@"str %@",str);
//获得数组的元素个数
NSUInteger arrayCount = [array count];
// 判断数组中是否存在某个对象
BOOL isContain = [array containsObject:id];
特性:
1.数组中可以存储不同类型的对象
2.数组实际上存储的时对象的地址,同样也可以存储数组的地址
3.存储自定义的对象 (最好都给我重写 description方法)
4.数组中存储基本数据类型, (如果你要在数组中存储基本数据类型,请包装好了之后再去存 NSNumber5.注意不要把nil值存储到NSArray中,会导致数据丢失

1.2:数组排序:

1.使用sortedArrayUsingSelector
NSArray * array = @[@"b",@"d",@"a",@"z"];
array = [array sortedArrayUsingSelector:@selector(compare:)];

2.使用block方式排序
array2 = [array2 sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
     //obj1 compare obj2 就是正序排序
     //obj2 compare obj1 就是倒序排序
     return [obj2 compare:obj1];
}];
3.使用自定义对象排序 :如果你向给你自己定义的对象排序,必须根据某一个属性来排序,

//sortDescriptorWithKey 参数要的就是你对象中,要依据哪个属性来排序,你就把哪个属性的名字当成key传入
//ascending YES表示正序 NO表示倒叙
NSSortDescriptor * d1 = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:NO];
NSSortDescriptor * d2 = [NSSortDescriptor sortDescriptorWithKey:@"year" ascending:NO];

//如果你要使用多个属性进行排序,默认在前面的NSSortDescriptor优先级比较高
NSArray * descripts = @[d2,d1];

array3 = [array3 sortedArrayUsingDescriptors:descripts];
1.3:可变数组:

  //1.创建可变数组
NSMutableArray * array = [[NSMutableArray alloc] initWithCapacity:0];

//1.数组中加入元素
[array addObject:str1];
//2.指定对象插入的位置
[array insertObject:str1 atIndex:2];

//3.删除 会通过对象,删除数组中所有的同一个地址的对象
[array removeObject:str1];

//4.通过索引的方式删除对象,超出了数组的count值,那么就会导致异常 index beyond bounds
[array removeObjectAtIndex:0];

[array addObject:str2];
[array addObject:str3];
[array addObject:str1];

//5.删除数组中所有的元素
[array removeAllObjects];
第二:NSDictionary

第一:NSDictionary
字典是以键值对的形式来存储数据 key value
字典的顺序不是按照存储时候的顺序。
字典中可以存任意数据类型

//1.创建字段,不可变的
NSDictionary * dic = [NSDictionary dictionaryWithObjectsAndKeys:@"apple",@"name", nil];

//2.快捷创建方式
NSDictionary * dic2 = @{ @"one":@"1",@"two":@"2"};

//4.获得字典的长度
dic.count

//5.从字典中取值
NSString * str  = [dic3 objectForKey:@"one"];

//6.遍历
//6.1取出所有的key值
NSArray * allkeys = [dic3 allKeys];

for (int i = 0; i < allkeys.count; i++)
{
   NSString * key = [allkeys objectAtIndex:i];

   //如果你的字典中存储的多种不同的类型,那么最好用id类型去接受它
   id obj  = [dic3 objectForKey:key];
}

  //6.2.枚举器
 NSEnumerator * enumerator =  [dic3 objectEnumerator];
id value;
while (value = [enumerator nextObject]) {
      NSLog(@"value %@",value);
}
第三:NSSet

//NSArray 自然顺序
//NSSet是无序的
//注意:这个是最为重要的功能 NSSet中不能够存储重复的数据,可以用它来去除重复的值

  //创建
NSString * str1 = @"one";
NSString * str2 = @"two";
NSString * str3 = @"three";
NSSet * set = [[NSSet alloc] initWithObjects:str1,str2,str3,str1, nil];
 //4.遍历
 NSEnumerator * enumerator = [set objectEnumerator];
NSString * value;
while (value = [enumerator nextObject]) {
    NSLog(@"value %@",value);
}

//1 创建可变集合NSMutableSet
NSMutableSet * muSet = [[NSMutableSet alloc] init];

//2.增加值
[muSet addObject:str1];

//3.删除
[muSet removeObject:str1];

//4.删除所有
[muSet removeAllObjects];

//5.遍历
NSEnumerator * en = [muSet objectEnumerator];
NSString * value;
while (value = [en nextObject]) {
   NSLog(@"value %@",value);
}

综合:集合相互转换

//1.NSArray 转换成 NSMutableArray
NSArray * array = @[@"one",@"two",@"three"];
NSMutableArray * muArray = [NSMutableArray arrayWithArray:array];
NSLog(@"muarray %@",muArray);

//2.NSDictonary 转换成        NSMutableDictionary
NSDictionary * dic = @{@"one":@"1",@"two":@"2"};
NSMutableDictionary * muDic = [NSMutableDictionary dictionaryWithDictionary:dic];
NSLog(@"mudic %@ ",muDic);

//3.NSset 转换成 NSMutableSet
NSSet * set = [[NSSet alloc] initWithObjects:@"one",@"two", nil];
NSMutableSet *muSet = [NSMutableSet setWithSet:set];
NSLog(@"muSet %@",muSet);


//4.NSArray 转换成NSSet
NSMutableSet * muSet2 = [NSMutableSet setWithArray:array];
NSLog(@"muSet2 %@",muSet2);


//5.NSDictionary 转化成NSArray
NSArray * allkeys = [dic allKeys];
NSLog(@"allkeys %@",allkeys);
NSArray * allValues = [dic allValues];
NSLog(@"allValues %@",allValues);

//6.字符串转换成数组
NSString * str = @"www.itacast.cn";
NSArray * strArray =        [str componentsSeparatedByString:@"."];
NSLog(@"strArray %@",strArray);
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/BaiHuaXiu123/article/details/49911851

Objective-c:集合类型遍历方法详解

前言在编程中经常需要遍历集合类型的元素,当前有多种方法实现此功能,初学者大多习惯于用标准的C语言循环,当然也可以使用 NSEnumerator 以及快速遍历(for-in),Objective-c 引...
  • Hierarch_Lee
  • Hierarch_Lee
  • 2015-12-30 22:58:21
  • 1483

java中LinkedList集合类实现栈和队列.doc

  • 2009年03月04日 21:24
  • 42KB
  • 下载

c++集合类

#include    #include    #include    using namespace std;   class Set   {    int maxsize; //集合的当前最大容量...
  • xu734816038
  • xu734816038
  • 2015-05-24 02:30:47
  • 1241

Object-c基础 加载中 控件

使用iPhone经常会看见一朵菊花旋转,那这个如何使用呢?我们来看看。 其实非常简单,只需要简单的控件UIActivityIndicatorView就可以了。 初始化方式 ...
  • GuoGrower
  • GuoGrower
  • 2017-03-19 19:06:26
  • 408

c++ 中的集合类

概述 list /* * array.cpp * * Created on: 2014-3-21 * Author: Administrator */ #...
  • proud2005
  • proud2005
  • 2014-03-22 11:00:28
  • 4348

object-c基础教程

  • 2009年11月06日 10:17
  • 518KB
  • 下载

集合类的体系结构

原文地址:点击打开链接 1. Collections(工具类) 和 Collection(集合顶层接口) 的区别 首先, “Collection” 和 “Collections” 是两个不同的概念...
  • Sherry_Rui
  • Sherry_Rui
  • 2016-03-31 10:28:47
  • 719

JAVA中的集合常用方法介绍

在使用Java的时候,我们都会遇到使用集合(Collection)的时候,但是Java API提供了多种集合的实现。 总的说来,Java API中所用的集合类,都是实现了Collection接口,他...
  • Hy_Fighting
  • Hy_Fighting
  • 2013-10-24 10:40:03
  • 1512

java的集合类都有哪些,主要方法.

最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适...
  • nszkadrgg
  • nszkadrgg
  • 2012-11-14 23:33:28
  • 4926

Java中集合类用法总结

  • 2011年08月25日 15:27
  • 524KB
  • 下载
收藏助手
不良信息举报
您举报文章:Object-C中的集合类
举报原因:
原因补充:

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