【Swift】学习笔记(四)——集合(Collection)

Swift和其他语言一样也提供了两种集合类型:数组和字典


数组:数组用来按顺序存储相同类型的数据,swift规定它是类型安全的,每一个数组都有自己的类型也就是其他语言所说的泛型。

创建数组:

1、var aa:[String] = ["aa","bb","cc"] 或者 var aa = ["aa","bb","cc"]

2、var aa = [String]()  //空数组  aa.append("aa") //向aa数组增加一个成员,aa=[]  //清空数组

3、var a = [Double](count:5,repeatedValue:0.0)  //创建一个5个大小的数组,并且都赋值为0.0   ,由于swift类型推断的特性,还可以不用指定类型,var a = Array(count:5,repeatedValue:0.0)不过不推荐。

4、var a = [Double](count:5,repeatedValue:0.0);  var b = [Double](count:5,repeatedValue:5.5); var c = a + b; //将两个数组项合并到一个数组中去,类型会从相加的数组中推断出来。

数组的访问和修改:

数组的操作莫过于加项,修改项,删除项,遍历项等操作。

var aa = [String]()

判断数组是否为空,aa.isEmpty() 

加到数组末尾:aa.append("test")  或者 aa += ["test1"]  或者  aa+=["test2","test3"]

插入到某一个位置:aa.insert("test2",atIndex:0)


获取某一项:下标  var tt = aa[0]


修改: aa[0] = "new test" 还可以批量改  aa[4...6] = ["a","b"]


删除项:var removeItem = aa.removeAtIndex(0) 被移除的项会返回出来。删除最后一个var removeItem = aa.removeLast()


遍历可以用for in循环。这个到for循环的时候再嘻嘻讨论。从上面append方法就可以看出数组是可变的。当然定义为let类型就不可变了。。。


字典-也就是键值对。无序存储  Dictionary<KeyType, ValueType>   KeyType的唯一限制就是可哈希的,这样可以保证它是独一无二的,所有的 Swift 基本类型(例如String,Int, Double和Bool)都是默认可哈希的


创建:1、通过字面量创建 var aa:Dictionary<String, String> = ["a":"aaa","b":"bbb"]   当然也可省略dictionary 写成 var aa =  ["a":"aaa","b":"bbb"] 

2、创建一个空字典 var aa =  Dictionary<String, String> ()  清空数据 aa = [:]   //比数组多了一个:号


读取:

1、字典大小  aa.count  count属性

2、下标获取  var tmp = aa["a"]


修改:

1、下标修改 aa["a"] = "abc"   //a这个key存在则修改,不存在则新增。很智能

2、方法修改   var oldValue = aa.updateValue("bbccdd",forKey:"b")


移除

1、用nil进行移除: aa["a"] = nil 就把key为a的移除了

2、方法移除: var oldValue = aa.removeForKey("a")  a这个key和存在的数据被移除了


遍历也是用for in循环。在for循环中讨论.


新增集合(set)

创建、构造方法创建:var settmp = Set<Character>()   字面量创建:var settmp:Set<String> = ["a","b"]

长度、settmp.count  只读count属性

插入、settmp.insert("a")

删除、settmp.remove("a")

清空、settmp = [] 或者 sttmp.removeAll()

检索、setmp.contains("a")

用集合是它提供了一些集合间操作的方法:

  • 使用union(_:)方法根据两个集合的值创建一个新的集合。
  • 使用subtract(_:)方法根据不在该集合中的值创建一个新的集合。
  • 使用intersect(_:)方法根据两个集合中都包含的值创建的一个新的集合。
  • 使用exclusiveOr(_:)方法根据值在一个集合中但不在两个集合中的值创建一个新的集合。
  • 使用“是否等”运算符(==)来判断两个集合是否包含相同的值。
  • 使用isSubsetOf(_:)方法来判断一个集合中的值是否也被包含在另外一个集合中。
  • 使用isSupersetOf(_:)方法来判断一个集合中包含的值是另一个集合中所有的值。
  • 使用isStrictSubsetOf(_:)或者isStrictSupersetOf(_:)方法来判断一个集合是否是另外一个集合的子集合或者父集合并且和特定集合不相等。
  • 使用isDisjointWith(_:)方法来判断两个结合是否不含有相同的值。


swift不像oc那样仅仅在C语言的基础上外包一层面向对象,它真的非常灵活也和其他的编程语言语法非常相似。上手很容易的。


update 801:collection集合 是值类型,也就是意味着在发生赋值或者传入函数时,将发生值拷贝!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值