Swift基础-0004

数组与字典


//: 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,4,3,2,1]
println(arrInt1)
//不包括最后一个值 一定要带小于号
arrInt1[0..<arrInt1.count] = [1,2,3,4,5]
println(arrInt1)


//关于数组声明个数和实际赋值个数不一致情况处理

//1.声明数组数量少于实际赋值数量时
var arrInt2 = [0,1,2,3]

//change 声明时位数小于实际赋值时位数  则按赋值顺序进行改变插入未声明位数元素 后追加原数组未声明位数之后的元素
arrInt2[0...2] = [0,1,2,3,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" , "sex":"男" ,"old":"38"]

//NSMutableDictionary 是指在字典中key和value 可以类型不统一

var message4 = ["name":"张三" , "sex":"男" ,"old":12]   //最后一个value是Int类型的

var message5:NSMutableDictionary = ["name":"张三" , "sex":"男" , "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)

图一
图二
图三
图四
图五
图六
图七

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值