数组与字典
//: Playground - noun: a place where people can play
import UIKit
var str = "Hello,playground"
//数组和字典
let arr = ["a","b"]
println(arr)
//let 声明的数组不允许改变
//var 声明的数组可以改变
//1.直接初始化数组
var arr2 = ["c","d"]
arr2 = ["f"]
println(arr2)
//2.先声明类型再使用赋值
var arr_init:[String]
arr_init = ["s","s"]
//3.声明类型时直接赋值
var arr_init1:[Double] = [1.00,2.00,2]
//在初始化数组时不声明类型则可以在同一数组中存放不同类型值
var arr3 = [1,"2",3.0,"C"]
//声明空数组
//1.无类型的空数组 但却无法推导其类型
var nullArry = []
//2.声明带类型的空数组
var nullArry2:[String] = []
//固定长度数组 初始化一个四位的数组 将值都设置为1
//var arr4 = [Int](count:4,repeatedValue:1)
//println(arr4)
//数组合并
var arr5 = arr2 + arr_init
println(arr5)
//数组元素的操作
println("arr5第一个元素是: \(arr5[0]) 数组的长度为:\(arr5.count)")
println("讲最后一个元素替换为hehe后的数组内容为")
arr5[arr5.count-1] = "hehe"
println(arr5)
//数组的区间赋值
var arrInt1 = [1,2,3,4,5]
//包括最后一个值
arrInt1[0...arrInt1.count-1] = [5,1]
println(arrInt1)
//不包括最后一个值 一定要带小于号
arrInt1[0..<arrInt1.count] = [1,5]
println(arrInt1)
//关于数组声明个数和实际赋值个数不一致情况处理
//1.声明数组数量少于实际赋值数量时
var arrInt2 = [0,1,3]
//change 声明时位数小于实际赋值时位数 则按赋值顺序进行改变插入未声明位数元素 后追加原数组未声明位数之后的元素
arrInt2[0...2] = [0,4]
println(arrInt2)
//2.改变数组数量大于实际赋值的元素数量时{注意第三位应该是2 但是因为声明改变却没有赋值则直接删除了该元素}
arrInt2 [0..<3] = [2,1]
println(arrInt2) //这里只是改变了实际的arrInt2[0...1]
//3.改变任意数组元素 只改变声明的位置元素
arrInt2[2...3] = [1,1]
println(arrInt2)
//数组追加元素
arrInt2.append(0)
//插入元素
arrInt2.insert(0,atIndex: 0)
//删除最后一个数组元素
arrInt2.removeLast()
//删除指定位数
arrInt2.removeAtIndex(0)
println("arrInt2元素 \(arrInt2)")
//请空数组
arrInt2.removeAll(keepCapacity: true)
//判断数组是否为空
if arrInt2.isEmpty
{
println("数组为空")
}
//再次追加数组
arrInt2.append(2)
arrInt2 += [3]
println(arrInt2)
//枚举数组
let people = ["张三","李四","王五"]
//遍历数组索引
for i in 0 ..< people.count
{
println("第\(i)个元素为\(people[i])")
}
//遍历值
for value in people
{
print(value)
}
println()
//加数组索引的值遍历
for (index,value) in enumerate(people)
{
println("第 \(index) 个元素的值为 \(value)")
}
//字典 类似于Java 中的Map 以 key-Value的方式存储
//1.标准创建字典和赋值的方式
var message:Dictionary<String,String> = ["name":"张三","sex":"男","old":"28"]
////2.根据推导而不直接声明字段类型
var message2:[String:String] = ["name":"如花","sex":"女","old":"18"]
//3.直接初始化
var message3 = ["name":"9527","old":"38"]
//NSMutableDictionary 是指在字典中key和value 可以类型不统一
var message4 = ["name":"张三","old":12] //最后一个value是Int类型的
var message5:NSMutableDictionary = ["name":"张三","old":12.2]
//声明为let 的字典不可以改变
//创建空字典
//1.
var nullDict1 = Dictionary<Int,String>()
//2.
var nullDict2 = [Int,String]()
nullDict1[10] = "hehe"
println(nullDict1)
//字典的添加删除修改
var message6 = ["name":"张三","性别":"女"]
message6["性别"] = "男"
message6["old"] = "22"
println(message)
//修改上面的值除了用key的方式还可以
message6.updateValue("33",forKey: "old")
//删除一个值
message6["old"] = nil
//或者
message6.removeValueForKey("old")
println(message6)
//获取字典中的值
var person = [10:"张三",20:"李四"]
println("是谁: \(person[10]!) ")
//不同数据间类型转换
message6["old"] = "21"
var age:Int? = message6["old"]?.toInt()
println(age!)
// NSObject 数组取值时 Int类型的值不需要使用可选类型变量 ?
var person2 = ["name":"张三","old":30]
//枚举字典
for (key,value) in person2
{
println("key: \(key),value: \(value)")
}
//分别获取对应的key 和value
for key in person2.keys
{
println(key)
}
for value in person2.values
{
println(value)
}
//将key转换为数组
let keys = Array(person2.keys)
//方法2
let value = [String] (person2.keys)
println(value)