swift学习笔记 --- Collection Types

原创 2016年08月30日 17:21:53

Mutability of Collections

  这取决于是var还是let,var可变,let不可变

Array

  数组里存放相同类型的对象,swift的Array 桥接于 OC里的NSArray

如何规定数组类型

   有两种方式来确定规定数组里所放数据的类型。第一是 Array<Element>,第二是[Element].

创造一个空的数组

   var someInts = [Int](),如果更具已有的内容推断出someInts为int数组,我们还可以直接用 someInts = []来设置空数组

创造带初始值的数组

  varthreeDoubles =Array(repeating:0.0,count:3)repeating这个参数为初始值,数组更具这个值来推断类型,count为初始值重复的次数。

创造一个数组通过合并两个数组

  var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
 // anotherThreeDoubles is of type [Double], and equals [2.5, 2.5, 2.5]
 
 var sixDoubles = threeDoubles + anotherThreeDoubles
 // sixDoubles is inferred as [Double], and equals [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]

创造一个数组的简易语法

 [value 1,value 2, value 3]

 var shoppingList = ["Eggs","Milk"]

访问和修改数组

 count属性:返回数组里的元素数量

 isEmpty属性

 append方法:添加元素

 +=操作符:合并其他数组

 [index]:访问数组元素,[index1...index2]语法可以替换一定范围内的值,

  如:shoppingList[4...6] = ["Bananas","Apples"]要注意的是选中范围内的被替换元素数量不一定

  等于替换的。

 insert(_:at:)方法:如:shoppingList.insert("Maple Syrup", at:0)

 remove(at:)方法:这个方法有返回值,返回值为移出的元素。

 removeLast()方法:


遍历一个数组

 方法一:

        for item in shoppingList {
        print(item)
       }

 方法二:

       如果你想要在得到值的同时,获取到该元素的下标,你应该用数组的enumerated()方法,该方法返回值与下标组成的元组。

       for (index, value) in shoppingList.enumerated() {
       print("Item \(index + 1): \(value)")
     }

 

Sets(注意Sets里的元素必须是可Hash的)

  设置集合类型:

    Set<Element>

  Sets元素的Hash值

   放在Sets里的类型,必须是可Hash的,一个Hash值是一个int类型,String, Int, Double, and Bool都是

   可Hash的


  创造和初始化一个空的Set

     varletters = Set<Character>()

果一个var类型的 Set已经确定了所存储的类型,可以通过 letters = []设置一个空的 Set。

用数组初始化一个 Set

varfavoriteGenres:Set<String> = ["Rock","Classical","Hip hop"]或者

  1. varfavoriteGenres= ["Rock","Classical","Hip hop"]
  2. 访问和修改一个 Set
  3. count 属性:
  4. isEmpty 属性:
  5. insert()方法:favoriteGenres.insert("Jazz")
  6. remove(_:)方法:注意 remove()方法有返回值,如果移除的元素不存在,则返回 nil;
  1. ifletremovedGenre = favoriteGenres.remove("Rock") {
  2. print("\(removedGenre)? I'm over it.")
  3. }else {
  4. print("I never much cared for that.")
  5. }
  6. // Prints "Rock? I'm over it."

   contains(_:) 方法:检验 Set 是否包含某元素

   遍历 Set 方法:

             1)  

  1. forgenrein favoriteGenres {
  2. print("\(genre)")
  3. }
  4. // Jazz
  5. // Hip hop
  6. // Classical
  7. 2)
  1. forgenrein favoriteGenres.sorted() {
  2. print("\(genre)")
  3. }
  4. // Classical
  5. // Hip hop
  6. // Jazz

         Set的sorted()方法,返回一个安 set 中元素从小到大排列的数组。

  集合操作

     intersection(_:) :返回一个新集合,这个新集合是两个集合的交集

           symmetricDifference(_:) :返回两个集合交集的补集

           union(_:):返回两个集合的并集。

           subtracting(_:):返回一个集合减去两个集合的并集。

     ==:判断两个集合的内容是否完全相同

     isSubset(of:):判断某个集合是否为另一个集合的子集。

     isSuperset(of:):判断某个集合是否为另一个集合的父集

     isStrictSubset(of:) or isStrictSuperset(of:) :判断是否包含但不相同。

          isDisjoint(with:):判断两个集合是否有相同值


 

Dictionaries

       设置字典类型:
      Dictionary<Key, Value> 或者  [key:value]其中key 必须是可hash的

       创造一个空字典
         varnamesOfIntegers = [Int:String]()
如果已经知道了namesOfIntegers为字典类型以及 key 和 value的类型直接可以:namesOfIntegers=[]
声明一个数组的简易方法:
  1. varairports: [String:String] = ["YYZ":"Toronto Pearson", "DUB": "Dublin"]或者
  1. varairports = ["YYZ":"Toronto Pearson", "DUB": "Dublin"]

  访问和修改字典:

    count 属性:

    isEmpty 属性:

    增加和修改: dictionary[key] = value 如果字典里没有这个 key 会自动添加,有的话为修改key 下的                值.或者用 updateValue(_:forkey:)方法,和上面唯一的区别是这个方法返回一个可选值,                如果 key存在,返回更改前的值,如果 key 不存在返回 nil。

    移除:   

               dictionary[key] = nil 或者 removeValue(forKey:)这个方法同 updateValue()一样都有返回值。

      

     遍历一个字典:

                

  1. for (airportCode,airportName)in airports {
  2. print("\(airportCode):\(airportName)")

  3. }
  4. forairportCodeinairports.keys {

  1. print("Airport code: \(airportCode)")
  2. }
  3. // Airport code: YYZ
  4. // Airport code: LHR
  5. forairportNamein airports.values {
  6. print("Airport name: \(airportName)")
  7. }
  8. // Airport name: Toronto Pearson
  9. // Airport name: London Heathrow

  10. letairportCodes = [String](airports.keys)
  11. // airportCodes is ["YYZ", "LHR"]
  12. letairportNames = [String](airports.values)
  13. // airportNames is ["Toronto Pearson", "London Heathrow"]


版权声明:本文为博主原创文章,未经博主允许不得转载。

MongoDB学习笔记

一、安装 下载地址:http://www.mongodb.org/downloads 按步骤进行安装,类型我选的是custom 二、配置环境 先将mongodb的安装目录下的...
  • xiaoquantouer
  • xiaoquantouer
  • 2016年06月03日 12:31
  • 449

台湾大学林轩田机器学习基石课程学习笔记3 -- Types of Learning

上节课我们主要介绍了解决线性分类问题的一个简单的方法:PLA。PLA能够在平面中选择一条直线将样本数据完全正确分类。而对于线性不可分的情况,可以使用Pocket Algorithm来处理。本节课将主要...
  • red_stone1
  • red_stone1
  • 2017年05月02日 09:16
  • 1826

《从零开始学Swift》学习笔记(Day 40)——析构函数

原创文章,欢迎转载。转载请注明:关东升的博客 与构造过程相反,实例最后释放的时候,需要清除一些资源,这个过程就是析构过程。在析构过程中也会调用一种特殊的方法deinit,称为析构函数。析构函数dein...
  • tonny_guan
  • tonny_guan
  • 2015年11月25日 10:28
  • 1973

Swift的自动引用计数->解决内存泄露

Swift的自动引用计数->解决内存泄露 在swift中的变量一般分为三种: 1、          strong 强引用  默认 2、          weak  弱引用  定义时前面加 we...
  • qq_14920635
  • qq_14920635
  • 2016年05月24日 12:05
  • 2091

Java集合框架学习笔记之集合与Collection API

一、CollectionAPI     集合是一系列对象的聚集(Collection)。集合在程序设计中是一种重要的数据接口。Java中提供了有关集合的类库称为CollectionAPI。     ...
  • HanTangSongMing
  • HanTangSongMing
  • 2014年05月27日 08:22
  • 4548

关于Swift中的值类型(Value Types)与引用类型(Reference Type)

Swift里面的类型分为两种: ●值类型(Value Types):每个实例都保留了一分独有的数据拷贝。如结构体 (struct)、枚举(enum) 和元组(tuple)。 ●引用类型(Refer...
  • hust_twj
  • hust_twj
  • 2015年08月27日 11:39
  • 1841

JAVA8新特性学习笔记

一、Lamda表达式 在JAVA8新特性中主要一点就是支持了Lamda表达式,这为我们开发带来了一些便利。 传统中我们实现匿名内部类是这样的: interface Message {// 这适宜个一个...
  • a917390823
  • a917390823
  • 2015年12月31日 17:38
  • 720

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

Swift和其他语言一样也提供了两种集合类型:数组和字典 数组:数组用来按顺序存储相同类型的数据,swift规定它是类型安全的,每一个数组都有自己的类型也就是其他语言所说的泛型。 创建数组: 1、...
  • u012386696
  • u012386696
  • 2014年10月27日 16:58
  • 965

Swift 嵌套类型(Nested Types)

枚举类型常被用于实现特定类或结构体的功能。也能够在有多种变量类型的环境中,方便地定义通用类或结构体来使用,为了实现这种功能,Swift允许你定义嵌套类型,可以在枚举类型、类和结构体中定义支持嵌套的类型...
  • ALLsharps
  • ALLsharps
  • 2016年06月27日 21:39
  • 237

swift 学习资源 大集合

今天看到了一个swift的学习网站,里面收集了很多学习资源 Swift 介绍 Swift 介绍   来自 Apple 官方 Swift 简介 (@peng_gong) ...
  • sqc3375177
  • sqc3375177
  • 2014年06月07日 17:07
  • 16724
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swift学习笔记 --- Collection Types
举报原因:
原因补充:

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