[swift]6.0原生集合类型

本文详细介绍了Swift中的数组、字典和Set集合。数组分为可变和不可变,通过`let`和`var`声明,支持访问、插入、删除等操作。字典以键值对形式存在,支持声明、初始化、更新和删除操作。Set集合存储唯一元素,不保证顺序,可进行遍历和集合运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

6.1 swift中的数组集合

数组分成两种,一种是由常变量let的不可改变的数组,另一种是由变量var的改变的数组

6.2数组的声明和初始化

常量(let)数组定义

/*let + 变量名 + : + 变量类型*/
let a:[Int] = [1,2,3,4,5]
let a<Int> = [1,2,3,4,5]
let a<Any> = [1,2,"swift"]                   /*Any可放置任何类型*/
/*let + 变量名*/
let b = [1,2,3,4,5]
/*let + 变量名 可以放置不同数据的类型*/
let c = [1,2,"swift","swift_2"]
/*空数组表示*/
let d:[Int] = []                             /*直接定义*/
let d:[Int]()                                /*专有语法*/

repeatedValue的使用

let d = [count:5,repeatedValue:1.0]
/*等价于*/
let d = Array(count:5,repeatedValue:1.0)
let d = [1.0,1.0,1.0,1.0,1.0]

变量(var)数组定义

/*var + 变量名 + : + 变量类型*/
var a:[Int] = [1,2,3,4,5]
var a<Int> = [1,2,3,4,5]
/*var + 变量名*/
var b = [1,2,3,4,5]
/*var + 变量名 可以放置不同数据的类型*/
var c = [1,2,"swift","swift_2"]
/*空数组表示*/
var d:[Int] = []                            /*直接定义*/
var d:[Int]()                               /*专有语法*/

/*repeatedValue的使用*/
var d = [count:5,repeatedValue:1.0]
/*等价于*/
var d = Array(count:5,repeatedValue:1.0)
var d = [1.0,1.0,1.0,1.0,1.0]

isEmpty返回的是布尔类型(Bool) 用来判断数组是否为空集,
空集返回true,反之返回false
数组名.isEmpty

let string_1: [Int]()
print (string_1.isEmpty)

let ssring_2: [Int] = [1,2,3]
print (string_2.isEmpty)

count 计算数组的元素个数
数组名.count

var string_3: [Int] = [1,2,3,4,5]
print (string_3.count)

数组的访问,插入,增加,修改和删除和遍历元素

数组访问

var array = ["a","b","c"]
print (array[1])                                /*访问第二个元素"b"*/

注意:元素排列是从0开始的

数组插入元素

数组名.append (“元素”)

var array = ["a","b","c"]
array.append ("d")                              /*插入一个元素d*/
print (array)

数组名.insert (“位置”, at: 元素)

var array = ["a","b","c"]
array.insert ("0",at: "swift")                  /*将swift插入第一个位置*/
print (array)

元素的修改
数组名[位置] = 元素

var array = ["a","b","c"]
array [0] = "swift"                             /*将第一个元素改为swift*/
print (array)                   

元素的删除
数组名.removeLast()
数组名.removeFirst()
数组名.remove(at:(位置))

var array = ["a","b","c","d"]

array.remove(at:2)                              /*删除第二个元素*/
print (array)

array.removeLast()                              /*删除最后一个元素*/
print (array)

array.removeFirst()                             /*删除第一个元素*/
print (array)

数组遍历

var array = ["a","b","c","d"]
for elm in array {
    print (elm)
}

6.4 字典声明与初始化

字典的概念和定义 (key:value)

6.5 字典声明与初始化

var dic1 = []                                   /*空字典*/

var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
print (dic2)

var dic3:[String: Int] = ["swift",1]            /*元素与类型对应*/

6.6 可变字典

字典的改变
数组名[“key”] = “value”

var dic = ["1":"苹果","2":"梨","3":"菠萝","4":"香蕉"]
dic["1] = "swift"
print (dic)

updateValue对字典的改变

数组名.updateValue(“key”, forKey: “value”)

updateValue如果字典中有相同的元素,则会替换掉
如果字典中没有元素,则会增加一组元素

var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
dic.updateValue ("dff",forKey: "2")             /*对字典已有的key进行value的修改*/
print (dic)

dic.updateValue ("www",forKey: "5")             /*对字典没有key进行增加*/
print (dic)

字典的删除

数组名[“key”] = nil 将字典中的value给清除掉

var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
dic["2"] = nil
print (dic)

6.7 字典遍历

key的遍历

var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
/*对dic中key进行输出*/
for dic in dic.keys {                                                   
    print (dic)
}

value的遍历

var dic =["1":"苹果","2":"梨","3":"菠萝",4:"香蕉"]
/*对dic中value进行输出*/
for dic in dic.values {                             
    print (dic)
}

key和value同时遍历

“`
var dic =[“1”:”苹果”,”2”:”梨”,”3”:”菠萝”,4:”香蕉”]
for (key,value) in dic {
print ((key,value))
}

for character in dic {
print (dic)
}

6.8 Swift中的Set集合

Set:集合
•集 NSSet 是一个无序对象的集合。集也有动态和静态之分,NSSet 是静态类型,成员不能被修改。NSMutableSet 是动态类型,成员可以被修改。
•集和数组不一样的是,它存储的每一个元素都是唯一的,没有完全相同的两个元素。所以数组中如果有两个相同的值,转换为集后只会有一个值。

6.9 Set声明和初始化

Set 型集合 ,不赋初值,指定数据类型为 String 型

 let set1 = Set<String>()
 // 不指定数据类型,自动推断

// 指定数据类型为 Int 型
let set3:Set<Int> = [1, 3, 5, 7]

6.10 可变的Set集合

var swiftSet:Set = [1, 3, 5, 7]
// 向集合中添加一个元素
 swiftSet.insert(8)  

 // 删除第一个元素
swiftSet.removeFirst()  

// 删除指定元素
swiftSet.remove(1) 

// 删除所有元素
swiftSet.removeAll(keepCapacity: true)  

//修改元素 
let nsSet:NSMutableSet = [2, 4, 6, 8]
nsSet.setSet([1, 2, 3])                               

6.11 Set集合遍历

let nsSet:NSSet = [2, 4, 6, 8]        
// 用闭包遍历
 nsSet.enumerateObjectsUsingBlock { (obj:AnyObject, stop:UnsafeMutablePointer<ObjCBool>) in
         print(obj)
}

// 用迭代遍历       
let enu:NSEnumerator = nsSet.objectEnumerator()                    
// AnyObject 后不要加 ?,否则会导致一直循环
 while let obj:AnyObject = enu.nextObject() {
           print(obj)
     }

// 条件遍历           
let set:Set = nsSet.objectsPassingTest { (obj:AnyObject, stop:UnsafeMutablePointer<ObjCBool>) -> Bool in                
  return (obj as! Int) > 5 ? true : false
 }
   print(set)

6.12 Set 集合运算

let nsCountedSet:NSCountedSet = NSCountedSet(array: [1, 2, 3])
 nsCountedSet.addObject(2)
 nsCountedSet.removeObject(1)
// 检索集合中指定元素的计数值
let num1:Int = nsCountedSet.countForObject(1)
// 检索集合中指定元素的计数值
let num2:Int = nsCountedSet.countForObject(2)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值