Swift-24-集合对象

server/2024/9/22 17:03:32/

数组Array

数组是值的有序集合,任何值都可以在数组中出现多次。数组通常用于值的有序很重要或者很有用的场合,但是值的顺序是否有意义并不是先决条件。与Objective-C不同的是,Swift的Array类型可以持有任何类型的值(对象和非对象都可以),而Objective-C的数组只能存储对象类型,基本类型需要用[]这种方式存放。

同样的可变和不可变由var或let来决定。

创建数组

以下三种定义等价的,这种有点类似于java的实现方法。

swift">//这种方式比较直观,个人比较推荐。可能和笔者从事多年java开发养成的习惯吧。
var bucketList: Array<String> = ["Climb Mt. Everest"] 
var bucketList1:[String] = ["Climb Mt. Everest"]
var bucketList2 = ["Climb Mt. Everest"]

数组操作

包括索引和追加等操作。

swift">import Foundation// Mutable arrays
var bucketList = ["1"]
var newItems = ["2", "3", "4", "5", "6"]//相加 ~~ bucketList = ["1", "2", "3", "4", "5", "6"]
bucketList += newItems//删除:按索引删除单个元素,返回 3,当前bucketList = ["1", "2", "4", "5", "6"]
bucketList.remove(at: 2)//长度 5
print(bucketList.count)//取值:区间取值 2,4, 5
print(bucketList[1...3])//修改:修改某个元素的值,此时索引为2的元素由4变成 4 7
bucketList[2] += " 7"//插入:插入一个值
bucketList[0] = "8"//插入:插入一个值,此时bucketList = ["8", "2", "9", "4 7", "5", "6"]
bucketList.insert("9", at: 2)//追加, bucketList = ["8", "2", "9", "4 7", "5", "6", "10"]
bucketList.append("10")//可变数组
var myronsList = ["Climb Mt. Kilimanjaro","Fly hot air balloon to Fiji","Toboggan across Alaska","Go on a walkabout in Australia","Scuba dive in the Great Blue Hole","Find a triple rainbow"]//判断相等,false
let equal = (bucketList == myronsList)//不可变数组
let lunches = ["Cheeseburger","Veggie Pizza","Chicken Caesar Salad","Black Bean Burrito","Felafel wrap"]

字典Dictionary

字典是一个比较经典的设计,每种编程语言中都有,它是一种键值对存储的结构,其key可以是string、int、float甚至bool。 其语法:var dict: Dictionary<Key, Value>。下列的实现方式都是合理。

创建字典

swift">var dict1: Dictionary<String, Double> = [:]
var dict2 = Dictionary<String, Double>()
var dict3: [String:Double] = [:]
var dict4 = [String:Double]()

字典操作

主要包括增加、修改、删除和遍历几种

swift">var movieRatings = ["Donnie Darko": 4, "Chungking Express": 5, "Dark City": 4]//字典长度 ~~ I have rated 3 movies.
print("I have rated \(movieRatings.count) movies.")//读取:取值 ~~4
let darkoRating = movieRatings["Donnie Darko"]//修改:修改或添加新值~~5
movieRatings["Dark City"] = 5//修改:这种方法会返回老的值 ~~ Old rating: 4; current rating: 5
let oldRating: Int? = movieRatings.updateValue(5, forKey: "Donnie Darko")if let lastRating = oldRating, let currentRating = movieRatings["Donnie Darko"] {print("Old rating: \(lastRating); current rating: \(currentRating)")
}//删除,下面两种方法等价,只不过=nil不会返回被删除元素的值
let removedRating: Int? = movieRatings.removeValue(forKey: "Dark City")
movieRatings["Dark City"] = nil//遍历,ENTRY,只输出The movie Donnie Darko was rated: 5.和The movie Chungking Express was rated: 5.
for (key, value) in movieRatings {print("The movie \(key) was rated: \(value).")
}//遍历, key和value
for movie in movieRatings.keys {print("User has rated \(movie).")
}for movie in movieRatings.values {print("User has rated \(movie).")
}//dict 与 Array
let watchedMovies = Array(movieRatings.keys)
let georgia = ["Cobb": [30301,30302,30303,30304,30305],"Dekalb": [30306,30307,30308,30309,30310],"Fulton": [30311,30312,30313,30314,30315]]
var zipcodes: [Int] = []
for zipcodeArray in georgia.values {for zipcode in zipcodeArray {zipcodes.append(zipcode)}
}
//Georgia has the following zip codes: [30306, 30307, 30308, 30309, 30310, 30301, 30302, 30303, 30304, 30305, 30311, 30312, 30313, 30314, 30315]
print("Georgia has the following zip codes: \(zipcodes)")

集合Set

这个没啥好说的,它存储的是值,并且值不能重复。

创建集合

大概有下列三种创建集合的方法。

swift">var groceryBag = Set<String>()//直接初始化
var groceryBag = Set(["Apples", "Oranges", "Pineapple"])//这种写法借鉴了Array
var groceryBag:Set = ["Apples", "Oranges", "Pineapple"]

常规操作

常归的增加、删除、查询操作;

swift">var groceryBag = Set<String>()//插入:
groceryBag.insert("Apples")
groceryBag.insert("Oranges")
groceryBag.insert("Pineapple")//查询
let hasBananas = groceryBag.contains("Bananas")//遍历
for food in groceryBag {print(food)
}

集合操作

它还有集合所特有的交集、并集等操作

swift">var groceryBag:Set = ["Apples", "Oranges", "Pineapple"]
//合并两个不同的集合
let friendsGroceryBag = Set(["Bananas", "Cereal", "Milk", "Oranges"])
//{"Oranges", "Apples", "Milk", "Pineapple", "Bananas", "Cereal"}
let commonGroceryBag = groceryBag.union(friendsGroceryBag)//求两个集合的交集
let roomatesGroceryBag = Set(["Apples", "Bananas", "Cereal", "Toothpaste"])
//{"Cereal", "Apples", "Bananas"}
let itemsToReturn = commonGroceryBag.intersection(roomatesGroceryBag)//不相交,判断两个集合是否有值相同,如果有任意的一个值相同则返回false
let yourSecondBag = Set(["Berries", "Yogurt"])
let roommatesSecondBag = Set(["Grapes", "Honey"])
//true
let disjoint = yourSecondBag.isDisjoint(with: roommatesSecondBag)

http://www.ppmy.cn/server/3297.html

相关文章

【python脚本】课表信息生成 course_test(源代码)

在处理excel表格数据中编写的一个可以自动处理课表信息的脚本。 import os import openpyxl import re# 检查文件是否存在 file_name "course_info.xlsx" if os.path.exists(file_name):# 如果文件存在&#xff0c;先删除os.remove(file_name)# 创建一个新的 Excel…

html、css、QQ音乐移动端静态页面,资源免费分享,可作为参考,提供InsCode在线运行演示

CSDN将我上传的免费资源私自变成VIP专享资源&#xff0c;且作为作者的我不可修改为免费资源&#xff0c;不可删除&#xff0c;寻找客服无果&#xff0c;很愤怒&#xff0c;&#xff08;我发布免费资源就是希望大家能免费一起用、一起学习&#xff09;&#xff0c;接下来继续寻找…

预处理详解

目录 1.预定义符号 2.#define定义常量 3.#define定义宏 4.带有副作用的宏参数 5.宏替换的规则 6.宏函数的对比 7.#和## 7.1 #运算符 7.2 ##运算符 8.命名约定 9.#undef 10.命令行定义 11.条件编译 12.头文件的包含 12.1头文件被包含的方式 12.1.1本地文件包含 …

Leetcode-48-旋转图像

题目说明 给定一个 n n 的二维矩阵表示一个图像。 将图像顺时针旋转 90 度。 说明&#xff1a;你必须在原地旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 示例 1: 给定 matrix [ [1,2,3], [4,5,6], [7,8,9] ], 原地旋转输入…

单例设计模式

目录 单例模式的特点 线程安全问题 实现单例模式的八种方式 单例模式的优点 单例模式的缺点 单例模式的使用场景 单例设计模式是一种创建型设计模式&#xff0c;用于确保某个类只有一个实例&#xff0c;并提供一个全局访问点。这种模式通常在需要控制一个类的实例只能存在…

Git的SSH密钥配置

1: https和ssh的区别 很多朋友在用github管理项目的时候&#xff0c;都是直接使用https url克隆到本地&#xff0c;当然也有有些人使用ssh url克隆到本地。 使用https url克隆对初学者来说会比较方便&#xff0c;复制https url然后到git Bash里面直接用clone命令克隆到本地就好…

QT 串口助手 学习制作记录

QT 串口助手qt 学习制作记录 参考教程&#xff1a;​​​​​​QT初体验&#xff1a;手把手带你写一个自己的串口助手_qt设计串口助手的流程图-CSDN博客 Qt之串口编程&#xff08;添加QSerialPort模块&#xff09;_如何安装 qt串口模块教程-CSDN博客 串口调试助手&#xff1…

HTTP概述

HTTP HTTP(超文本传输协议) 认识URL 平时我们俗称的 “网址” 其实就是说的 URL urlencode和urldecode 像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现。 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义. 转义的规则…