文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

区块链时代的拜占庭容错:Tendermint (七)

原文题目:《Tendermint: Byzantine Fault Tolerance in the Age of Blockchains》 原文作者:Ethan Buchman 本文为节选 软件实现 Tendermint采用Go语言实现,代码在https://github.com/tend...

万向区块链
28分钟前
7
0
日志分级输出到指定文件

log4j.properties文件 #根设置,输出级别为DEBUG级别, 输出文件为 ERRORA,stdout,DEBUGAlog4j.rootLogger=DEBUG,ERRORA,stdout,DEBUGA#过滤掉spring框架下的额外日志#log4j.category...

嘴角轻扬30
34分钟前
2
0
Hash源码分析(JDK1.7和1.8的对比)

前言 HashMap 在 Java 和 Android 开发中非常常见 而HashMap 1.8 相对于 HashMap 1.7 更新多 今天,我将通过源码分析HashMap 1.8 ,从而讲解HashMap 1.8 相对于 HashMap 1.7 的更新内容,希望...

瑞查德-Jack
34分钟前
4
0
Amino——表现层

一、Amino 整体视觉感受 Amino采用的主题色是神秘的蓝紫色,搭配白色图标和文字,其他图标、按钮、卡片等采用饱和度较高的亮色,整体风格活泼灵动。蓝紫色给人一种神秘感,好比陌生人之间的社...

铸剑为犁413
36分钟前
3
0
日志服务与SIEM(如Splunk)集成方案实战

背景信息 目标 本文主要介绍如何让阿里云日志服务与您的SIEM方案(如Splunk)对接, 以便确保阿里云上的所有法规、审计、与其他相关日志能够导入到您的安全运维中心(SOC)中。 名词解释 LOG(S...

阿里云官方博客
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部