swift 初见-5集合类型

// Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"
// swift的集合类型只有数组和字典
// 数组中只能存储相同类型的数据(可以是基本类型,也可以是类对象)

// 申明方法  [String] Array<String>

// 一旦隐是声明后,他的类型就确定了,不能在存储其他类型的数据了
var array=["a","b"]
var array1:[String]=["a","b"]
var array2:Array<String>=["a","b"]

array[0]="aaa"
array
var array4=[Int]()
var string=String()
var array5=Array<String>()
// 这样不会报错,但是没有申明具体的类型,它默认的会是OC中得NSArray类型的数组,所以这样定义的数组已经失去了它的意义了,没法做太多操作
// var array6=[]
//array6.append(3)    //error: ‘NSArray‘ does not have a member named ‘append‘
// 清空数组 
array1=[]  // 清空后并不能改变它能存储的数据类型
array1.append("ccc")

array1=[String]()
array1=Array<String>()
// 创建并初始化
var array6=[Int](count: 10, repeatedValue: 0)
array6.append(100)
array6

// 合并数组
var array7=[1,2,3]
var array8=array6 + array7
array8
array8 += [4,5]
println(array8)
array8.removeAtIndex(14)
// insert ,romove 方法和其他的差不多
array8.removeLast()

// 注意index都要在索引值内部

// 批量替换,注意是三个点号
array8[2...4] = [2,2,2]
array8

array8[2...4]=[100]   // 不需要元素个数与修改的个数相匹配
array8
//array8[2...4]=0       // 这样写是错误的

for index in 0...array.count
{
    println(index)
}


for item in array
{
    println(item)
}

// 使用enumerate函数
for (index,item) in enumerate(array)
{
    println("\(index)-\(item)")
}

// dictionarys  字典是无序的
var dictionarys=[1:"a",2:"b"]  // 隐式声明
// 存储的键和值可以任意类型
// 一个字典只能存储固定的一种键和值的数据类型搭配 (!!特别重要)
// Dictionary<Int,String>      // 显示声明
// 注意分割符是 , 号而不是: 号
 var dict1:Dictionary<Int,String>=[1:"bbb"]
  println(dict1)
  
// 这里分割是 : 号 并不是 , 号
var dict2:[Int:String]=[1:"aaa"]
// var dict3:[Int , String]=[1:"aaa"]  // 错误
println(dict2)

// 清空字典
var dict3=Dictionary<Int,String>()
var dict4=[Int:String]()
// 简便方法清空字典
dict2=[:]   // 同样清空并不能改变一个字典可以存储的数据类型

dictionarys.count
dictionarys.isEmpty
dictionarys[1]  //可选型数据,
// "hahha"+dictionarys[1] //错误写法
"hahha"+dictionarys[1]!   // 正确
// key是不可重复的
// 插入新值
dictionarys[3]="c"  // 插入无对应的新key和值
println(dictionarys)
// 修改
dictionarys[3]="3c"
var oldValue=dictionarys.updateValue("3ccc", forKey: 3)

// 删除
dictionarys[3]=nil
println(dictionarys)
 dictionarys.removeValueForKey(2)  //有返回值的,返回被删除的值
 
// 遍历字典
 for (key,value) in dictionarys
 {
    println("\(key) : \(value)")
 }
 
 
 dictionarys.keys
 dictionarys.values

 for key in dictionarys.keys
 {
    println(key)
 }
 for value in dictionarys.values
 {
    println(value)
 }
 
 
 // let 型数组或者字典定义后是不可以有任何更改操作的

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。