文档章节

Object-C代码练习【集合_NSSet和NSMutableSet】

TomatosX
 TomatosX
发布于 2014/10/06 21:42
字数 695
阅读 13
收藏 0
//
//  main.m
//  集合_NSSet
//
//  Created by on 14-10-6.
//  Copyright (c) 2014年 apple. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
///////////////////////////////////不可变集合///////////////////////////////////
//        概念:NSSet类,是一组单值对象的集合,且NSSet实例中元素是无序,同一个对象只能保存一个
        
//        直接创建集合
        NSSet *set1 = [[NSSet alloc] initWithObjects:@"a", @"b", @"c", @"d", nil];
        NSLog(@"%@", set1);
        
//        通过数组的构建集合
        NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];
        NSSet *set2 = [[NSSet alloc] initWithArray:array];
        NSLog(@"%@", set2);
        
//        通过已有的集合构建
        NSSet *set3 = [[NSSet alloc] initWithSet:set2];
        NSLog(@"%@", set3);
        
//        集合中元素的个数
        NSLog(@"%ld", [set3 count]);
        
//        以数组格式返回集合3中所有对象
        NSArray *array2 = [set3 allObjects];
        NSEnumerator *enumArray = [array2 objectEnumerator];
        id obj;
        while (obj = [enumArray nextObject]) {
            NSLog(@"%@", obj);
        }
        
//        返回集合3中任意一个对象
        id tmp = [set3 anyObject];
        NSLog(@"%@", tmp);
        
//        集合3中是否包含内容为2的字符串对象,包含返回YES,不包含返回NO
        NSLog(@"判断是否存在:%hhd", [set3 containsObject:@"2"]);
        
//        集合1中和集合3中是否包含有相同的元素对象,有返回YES,没有返回NO
        NSLog(@"判断是否有相同:%hhd", [set1 intersectsSet:set3]);
        
//        判断集合2和集合3中的元素是否完全匹配,是返回YES,否返回0
        NSLog(@"判断是否完全匹配:%hhd", [set2 isEqualToSet:set3]);
        
//        判断集合3是否是集合4的子集,是返回YES,否返回NO
        NSSet *set4 = [[NSSet alloc] initWithObjects:@"1", @"2", @"3", @"one", @"two", @"a", nil];
        NSLog(@"判断子集:%hhd", [set3 isSubsetOfSet:set4]);
        
//        为集合5追加一个元素,返回新的集合6
        NSSet *set5 = [NSSet setWithObjects:@"1", @"2", nil];
        NSSet *set6 = [set5 setByAddingObject:@"one"];
        NSEnumerator *enumSet6 = [set6 objectEnumerator];
        id objSet6;
        while (objSet6 = [enumSet6 nextObject]) {
            NSLog(@"集合6:%@", objSet6);
        }
        
//        合并集合1和2,返回新的集合7
        NSSet *set7 = [set1 setByAddingObjectsFromSet:set2];
        NSLog(@"%@", set7);
        
//        合并集合1和数组对象array,并生成新的集合8
        NSSet *set8 = [set1 setByAddingObjectsFromArray:array];
        NSLog(@"%@", set8);
        
///////////////////////////////////可变集合///////////////////////////////////
        
//        创建空的集合
        NSMutableSet *muSet1 = [NSMutableSet set];
        NSLog(@"%@", muSet1);
        
        NSMutableSet *muSet2 = [NSMutableSet setWithObjects:@"1", @"2", nil];
        NSMutableSet *muSet3 = [NSMutableSet setWithObjects:@"a", @"2", nil];
        
//        集合2“减去”集合3中的元素
        [muSet2 minusSet:muSet3];
        NSLog(@"%@", muSet2);
        
//        集合4和集合3的交集
        NSMutableSet *muSet4 = [NSMutableSet setWithObjects:@"a", @"b", nil];
//        注意这里是intersectSet不是intersectsSet
        [muSet4 intersectSet:muSet3];
        NSLog(@"%@", muSet4);
        
//        集合4和集合3的并集
        [muSet4 unionSet:muSet3];
        NSLog(@"%@", muSet4);
        
//        将空集合1设置成集合3中的内容
        [muSet1 setSet:muSet3];
        NSLog(@"%@", muSet1);
        
//        根据数组增加集合元素
        [muSet4 addObjectsFromArray:array];
        NSLog(@"%@", muSet4);
        
//        移除指定元素
        [muSet4 removeObject:@"1"];
        NSLog(@"%@", muSet4);
        
//        移除所有元素
        [muSet4 removeAllObjects];
        NSLog(@"%@", muSet4);
        
///////////////////////////////////练习:倒置字符串///////////////////////////////////
        NSMutableString *muString = [[NSMutableString alloc] initWithString:@"abc123.xyz789"];
        int length = (int)muString.length;
        for (int i = 0, j = length - 1; i < j; i++, j--) {
            NSRange rangI = {i, 1};
            NSRange rangJ = {j, 1};
            id tmp1 = [muString substringWithRange:rangI];
            [muString replaceCharactersInRange:rangI withString:[muString substringWithRange:rangJ]];
            [muString replaceCharactersInRange:rangJ withString:tmp1];
        }
        
        NSLog(@"字符串的倒置:%@", muString);
    }
    return 0;
}



© 著作权归作者所有

共有 人打赏支持
TomatosX
粉丝 22
博文 207
码字总数 119547
作品 0
成都
iOS工程师
Object-c 中的数据类型

导航: 基本类型 ID 对象类型常见的有 对象类型 -NSLog -NSNumber -NSString和NSMutableString -NSArray和NSMutableArray -NSSet和NSMutableSet -NSDictionary和NSMutableDictionary 基本类型......

gaoios
2014/01/05
0
0
OC语言自学《十二》---- OC(Foundation框架部分知识总结)

NSRange 表示一个范围 主要用来操作字符串 CGPoint、NSPoint 通过设置x坐标和y坐标来设置某个点 IOS设备的x和y从左上角开始,y值往下面增加,x值往右面增加 CGSize、NSSize 表示一个矩形尺寸...

罗眯眯
2014/04/09
0
0
Summary for NSSet

集合对象的关键字是NSSet与NSMutableSet。前者是不可变集合,后者是可变集合,Objective-C语言中大部分数据结构都存在可变与不可变两种数据。这里的集合很像Java语言与C语言中的Set,用法基本...

sirier
2012/11/24
0
0
copy与mutableCopy区别,strong和copy的使用

本篇文章主要讲两个知识点:1.深拷贝与浅拷贝 2.NSArray和NSMutaleArray应该用copy还是stong修饰。 一、我们先来分析深拷贝(返回一个对象,一个新的指针指向一个新的内容)与浅拷贝(返回一个...

Jesse1949
2017/09/01
0
0
OC之NSSet/NSMutableSet

1、集合(NSSet)与数组(NSArray)比较: (1)都是存储不同的对象的地址 (2)NSArray是有序的集合,NSSet是无序的集合。 (3)集合是一种哈希表,运用散列算法,查找集合中的元素比数组速度...

feng_blog
2015/09/02
66
0

没有更多内容

加载失败,请刷新页面

加载更多

C++ std::function 和 std::bind

C++11提供了std::function和std::bind两个工具,用于引用可调用对象。这些可调用对象包括 普通函数,Lambda表达式,类的静态成员函数,非静态成员函数以及仿函数等。引用可调用对象,可以用于...

yepanl
今天
1
0
python:可迭代对象的索引

关于 python的range的用法: 注意是[ 开始,结束)的半开区间,不包括结束 http://www.runoob.com/python/python-func-range.html import collectionsfrom collections import Iterable字符串......

Oh_really
今天
2
0
docker-compose ,docker-stack

1.例子 version: "3"services: php: image: registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5 ports: - "38080:80" networks: - my_php_mysql volum......

chenbaojun
今天
3
0
SQL_Server2000示例数据库NorthWind的分析(转)

SQL_Server2000示例数据库NorthWind的分析 表名:Categories(食品类别表) 表结构: 字段名称 数据类型 长度 允许为空 CategoryID(主键) int 4 否 CategoryName nvarchar 15 否 Description ...

QQZZFT
今天
1
0
laravel 5.5 Session store not set on request.

laravel 5.5 数据存入session,会出现Session store not set on request.错误。查了下laravel 5.5将session放到global middleware中,需要laravel的文件 ./app/Http/Kernel.php中的加上一句:...

MichaelShu
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部