Swift 笔记 (四) —— 集合类型

集合类型

Swift 提供了两种集合类型, Array, Dictionary

Array与Dictionary 都须要存同样类型的数据  //实际測试的时候发现能够混杂类型,以下有样例

Array 是有序的, Dictionary 是无序的

Dictionary须要一组无唯一的索引用于查找,也就是key

Array

原型: Array<SomeType>, SomeType指的是要放在Array里的数据类型

var myArray: String[] = [“var1”, “var2”, “var3”]

能够简写为:

var myArray = [“var1”, “var2”, “var3”]

假设给定了Array的类型的话。那么Array里就仅仅能存一种特定的类型,但假设是简写的形式的话。混杂的数据类型居然也能够!

到眼下为止,官方的文档上还没有提及这样的特性:

var myArray = [“string1”, 1, 2]    //xcode是能够显示出来正确的结果的。可能兴许章节有介绍吧

还能够初始化一个空Array

var myInts = Int[]()

或者把全部值初始为同样的值

var myDouble = Double[](count:3, repeatedValue: 0.0)

方法

cout (取得Array中的元素个数)

count (取得Array中的元素个数)(感谢
swift技术交流第一平台(355277)的群友 夕颜(1651150754) 指出错别字 )

myArray.count

isEmpty (Bool型返回值, 用于推断Array是不是空的)

myArray.isEmpty

append (给Array追加元素,在最后)

myArray.append(“hello”)

+=  (这个类型append。可是更牛,能够把两个Array连起来)   //感谢Swift苹果超级群(191026105)的群友Shawn·Shoper(369201170)指正

+=  (这个类似append,可是更牛,能够把两个Array连起来)

myArray += “world”

myArray += [“hello”, “kitty"]

myArray += myArray

但要注意的是,刚才我们创建的“混杂数据类型“的myArry,就是那个 [“string1", 1, 2] 是不能够这样操作的,编辑器会报错:Could not find an overload for “+=“ that accepts the supplied arguments

insert(atIndex:) (在指定下标插入元素)

myArray.insert(“need”, atIndex: 0)  //这是延续了objective-c的写法吧

在一个越界的下标位置插入是不被同意的,由于Array是连续的

removeAtIndex(index:) (删除指定下标位置的元素)

myArray.removeAtIndex(0)

removeLast (删除最后一个元素)

myArray.removeLast()

removeAll(keepCapacity:)  (删除全部元素)

myArray.removeAll(keepCapacity: false)

删除全部元素还有个办法:

myArray = [] //显然这样的方法非常好用。可是和removeAll比,哪个快,就须要在程序里測了

下标语法 (subscript syntax)

var myFirstItem = myArray[0]  //下标从0開始

还能够用范围型下标。

。。好雷:

myArray[2…3] = [“china”, “shanghai”]

值得注意的是。这里用了...也就是下标为 2,3,4,而赋值的数量却能够不同,这里有两种情况须要说明:

1. 下标数多于新值数 :非常好解释。多了的扔掉

2.  下标数少于新值数: 非常奇妙。这个数组会在多出来的值的地方,在给定的最大下标处開始插入。而原本在后面的值,会往后移

当然,这里都是指变量数组。而不是常量数组

越界

越界依旧会崩溃…这个就不多说了

遍例

1. for-in

for item in myArray {

println(item)

}

2. enumerate

这是个全局的函数

for (index, value) in enumerate(myArray) {

println (“item \(index +1): \(value)”)

}

Dictionary

key要唯一, 假设对一个已经有的key操作,会改掉原值

与 NSDictionary和 NSMutableDictionary不同的是,Dictionary能够使用不论什么对象做为key和value

原型: Dictionary<KeyType, ValueType> //依据官方文档的描写叙述,能够知道Dictionary就是个哈稀表

全部Swift的基本数据类型。String, Int, Double, Bool 全都能够做为key

与Array类似的初始化方法:

var myDictionary: Dictionary<String, String> = [“china”: “panda”, “australia”:”kangaroo"]

因为Swift能够依据数值去推断数据类型,所以Dictionary一样能够不用指定类型初始化:

var myDictionary = [“china”: “panda”, “australia”:”kangaroo”]

与Array类似。也能够创建一个空的Dictionary:

var myDictionary = Dictionary<String, String>()

清空Dictionary里的元素:

myDictionary = [:]          //注意这里的冒号

方法

count (取得Dictionary中的key-value对的数量)

myDictionary.count

updateValue(forKey:) (改某一个key的值)

myDictionary.updateValue(“duckbill”, forKey:”australia")

也能够写成

myDictionary[“australia”] = “duckbill"

遍例

for-in

for (country, animal) in myDictionary {

println(“counter: \(country) , animal: \(animal)”)

}

也能够单独遍例key

for country in myDictionary.keys {…}

单独遍例value

for animal in myDictionary.values {…}

也能够把key 或者 value拿出来创建一个Array

var myKeyArray = Array(myDictionary.keys)

var myValueArray = Array(myDictionary.values)

定长与不定长

官方文档上叫 mutable 和 immutable (可变,不可变)

我认为这里隐藏一条信息:

并非元素不可改,而是长度不可变,比方

let myArray = [1,2,3]  //这个Array 就仅仅能有3个元素,不能多也不能少,但能够改变里面的值

let myDictionary = [1:”1”, 2:”2”]    //类似Array

时间: 2024-08-02 18:30:20

Swift 笔记 (四) —— 集合类型的相关文章

IOS开发语言Swift入门连载---集合类型

IOS开发语言Swift入门连载-集合类型 Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储相同类型的数据.字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对). Swift语言里的数组和字典中存储的数据值类型必须明确. 这意味着我们不能把不正确的数据类型插入其中. 同时这也说明我们完全可以对获取出的值类型非常自信. Swift 对显式类型集合的使用确保了我们的代码对工作所需要的类型非常清楚,也让我们在开发中可以早早地找到任何的类型不匹配错

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

Swift和其他语言一样也提供了两种集合类型:数组和字典 数组:数组用来按顺序存储相同类型的数据,swift规定它是类型安全的,每一个数组都有自己的类型也就是其他语言所说的泛型. 创建数组: 1.var aa:[String] = ["aa","bb","cc"] 或者 var aa = ["aa","bb","cc"] 2.var aa = [String]()  //空数组  aa.

Swift中的集合类型

一.引子: 在2014年10月TIOBE编程语言排行榜中,Swift位居第18位,从2014WWDC发布会首次公布至今不到半年时间,swift一直受到编程人员的追捧,其热衷程度并不亚于当红巨星Taylor Swift.相信在不远的将来,swift能够平稳发展,并逐步取代Objective-C. 二.swift的集合类型 下面回归主题.作为一名iOS开发者,我们已经非常熟悉诸如NSArray,NSDictionary,NSSet等常见集合类型,以及它们的可变同类NSMutableArray,NSM

swift 初见-5集合类型

// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // swift的集合类型只有数组和字典 // 数组中只能存储相同类型的数据(可以是基本类型,也可以是类对象) // 申明方法 [String] Array<String> // 一旦隐是声明后,他的类型就确定了,不能在存储其他类型的数据了 var array=["a"

[Swift]Day03:集合类型

集合类型 数组 重复值的初始化 除了普通的初始化方法,我们可以通过 init(count: Int, repeatedValue: T) 来初始化一个数组并填充上重复的值: // [0.0,0.0,0.0] var threeDoubles = [Double](count:3,repeatedValue:0.0) 带索引值的遍历 我们可以用 for in 遍历数组,如果想要 index 的话,可以用 enumerate<Seq : SequenceType>(base: Seq) : let

Swift 学习- 05 -- 集合类型

// 集合类型 // swift 提供 Arrays , Sets 和 Dictionaries 三种基本的集合类型用来存储数据 , 数组(Arrays) 是有序数据的集, 集合(Sets)是无序无重复数据的集, 字典(Dictionaries) 是无序的键值对的集 // swift 语言中的 Arrays, Sets 和 Dictionaries 中存储的数据值类型必须明确, 这意味着我们不能把不正确的数据类型插入其中, 同事这也说明我们完全可以取回值的类型非常自信 // 集合的可变性 //

Spring.Net学习笔记七(集合类型的注入)

Spring.NET还支持集合类型的注入.而且使用起来也比较方便. 一.ILIst类型 使用<list>元素作为ILIst的标签,value为集合中元素的值.也可以注入对象,甚至关联其它对象,使用 <ref/>元素表示关联的对象,object 属性为所关联对象的id或name.集合可以为空,用<null/>元素来标记. 在<list>元素中设置 element-type 属性表示泛型T的类型,例如 element-type="int"  

Swift学习笔记- 4.集合类型

数组 数组的简单语法 写数组应遵循 Array<SomeType> 这样的形式,也可以使用 [someType] 这样的简单语法.推荐使用更短的 数组构造语句 数组字面量: [value1, value2, value3] var shoppingList: [String] = ["Eggs", "Milk”] 由于类型推断机制,当我们用字面量构造只拥有相同类型数值的时候,我们不必把数组的类型定义写清楚.还可以这么写: var shoppingList = [&

PHP学习笔记四【类型运算】

<?php //类型运算符 class Dog { } class Cat { } $a=new Cat; var_dump($a instanceof Cat); //在实际开发中,判断某一个变量是否是某个类型 if($a instanceof Cat) { echo '<br/>$a 是一只猫'; } $b=123; if($b instanceof integet)//[无法判断]只能用来判断class类型不能用来判断基本数据类型 { echo '$b 是一个整数'; } //br