NSSet -- 集合&&NSMutableSet -- 可变集合

//
//  main.m
//  OC05-task-03
//
//  Created by Xin the Great on 15-1-25.
//  Copyright (c) 2015年 Xin the Great. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        ///////////////NSSet -- 集合////////////////

        //不可变

        //集合没有重复的元素,而且无序
        NSSet *set = [[NSSet alloc] initWithObjects:@"a",@"b",@"a", nil];
        NSLog(@"set is %@",set);

        //类方法初始化
        NSSet *set1 = [NSSet setWithObjects:@"1",@"2",@"x",@"y", nil];
        NSLog(@"set1 is %@",set1);

        //获取集合元素的个数
        NSUInteger count = [set1 count];
        NSLog(@"count is %ld", count);

        //获取所有的集合元素
        NSArray *list = [set1 allObjects];
        NSLog(@"list is %@", list);

        //获得任意一个元素
        id value = [set1 anyObject];
        NSLog(@"value is %@", value);

        //判断集合中是否包含某一个元素
        BOOL isTure = [set1 containsObject:@"u"];
        NSLog(@"isTure is %d", isTure);

        ////////////////NSMutableSet -- 可变集合////////////
        NSMutableSet *mutableSet = [NSMutableSet set];
        //添加元素
        [mutableSet addObject:@"x"];
        NSLog(@"mutableSet is %@", mutableSet);

        //批量添加
        NSArray *values = @[@"1", @"2", @"3", @"3", @"3"];
        [mutableSet addObjectsFromArray:values];
        NSLog(@"mutableSet is %@", mutableSet);

        //删除元素
        [mutableSet removeObject:@"x"];
        NSLog(@"mutableSet is %@", mutableSet);

        //删除所有
        [mutableSet removeAllObjects];
        NSLog(@"mutableSet is %@", mutableSet);

        //集合的遍历
        NSSet *set3 = [NSSet setWithObjects:@"1",@"2",@"3",@"4",@"5",@"6", nil];

        //传统遍历,对集合来说必须要转化为数组
        NSArray *arr3 = [set3 allObjects];
        for (int i = 0; i < set3.count; i++) {
            //不可以通过下标取元素
//            NSString *str = set3[i];
            NSString *str = arr3[i];
            NSLog(@"str is %@", str);
        }

        NSLog(@"------------------------------------------");
        //快速遍历
        for (NSString *str in set3) {
            NSLog(@"str is %@", str);
        }

    }
    return 0;
}

时间: 2024-08-22 13:03:08

NSSet -- 集合&&NSMutableSet -- 可变集合的相关文章

集合与可变集合排序(自己使用)

int main(int argc, const char * argv[]) { @autoreleasepool { //字符串进行排序 NSArray *[email protected][@"b",@"a",@"c"]; NSSortDescriptor *ns=[NSSortDescriptor sortDescriptorWithKey:nil ascending:YES]; NSArray *B=[arr sortedArrayUs

集合、可变集合

<pre name="code" class="objc">int main(int argc, const char * argv[]) { @autoreleasepool { // 4 NSArray -> NSSet NSArray * array = @[@"one",@"two",@"three"]; NSSet * set = [NSSet setWithArray:arra

Guava学习笔记:guava的不可变集合

Guava学习笔记:guava的不可变集合 不可变集合的意义 不可变对象有很多优点,包括: 当对象被不可信的库调用时,不可变形式是安全的: 不可变对象被多个线程调用时,不存在竞态条件问题 不可变集合不需要考虑变化,因此可以节省时间和空间.所有不可变的集合都比它们的可变形式有更好的内存利用率(分析和测试细节): 不可变对象因为有固定不变,可以作为常量来安全使用. 创建对象的不可变拷贝是一项很好的防御性编程技巧.Guava为所有JDK标准集合类型和Guava新集合类型都提供了简单易用的不可变版本. 

Immutable(不可变)集合

不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 4.可以被使用为一个常量,并且期望

Guava学习笔记:Immutable(不可变)集合

不可变集合,顾名思义就是说集合是不可被修改的.集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变. 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis) 4.可以被使用为一个常量,并且期望

【java代码之美】---guava之Immutable(不可变)集合

Immutable(不可变)集合 一.概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开.Collections是jdk提供的一个工具类. Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别: 当Collections创建的不可变集合的wrapper类改变的时候,不可变集合也会改变,而Guava的Immutable集合保证确实是不可变的. 1.JDK中实现immuta

[Google Guava] 2.1-不可变集合

范例 01 public static final ImmutableSet<String> COLOR_NAMES = ImmutableSet.of( 02 "red", 03 "orange", 04 "yellow", 05 "green", 06 "blue", 07 "purple"); 08 09 class Foo { 10 Set<Bar> ba

OC中NSDictionary(字典)、NSMutableDictionary(可变字典)、NSSet(集合)、NSMutableSet(可变集合)得常用方法

字典用于保存具有映射关系数据的集合 一个key—value对认为是一个条目(entry),字典是存储key—value对的容器 与数组不同,字典靠key存取元素 key不能重复,value必须是对象 键值对在字典中是无序存储的 字典分:不可变字典(NSDictionary)和可变字典(NSMutableDictionary) 不可变字典一旦创建,键值对就不可更改,不可添加,不可删除,仅能读取key或者value 常用方法有: 1.创建字典对象 2.获取所有key值,获取所有value值 3.通过

IOS集合NSSet与NSMutableSet知识点

NSSet在实际应用中与NSArray区别不大,但是如果你希望查找NSArray中的某一个元素,则需要遍历整个数组,效率低下.而NSSet在查找某一特定的元素的时候则是根据hash算法直接找到此元素的位置,效率高. NSSet是一个无序的,管理对个对象的集合类,最大特点是集合中不允许出现重复对象,和数学上的集合含义是一样的.除了无序,不许重复,其他功能和NSArray是一样的;需要注意的是:NSSet,NSArray里面只能添加cocoa对象,如果需要加入基本数据类型(int,float,BOO