5 数组 Swift/Object-C ——《Swift3.0从入门到出家》
Swift中数组是一种数据结构,用来存放多个形同类型的数据结构,数据在数组内的存放是有序的,存进来的数据个读出来的顺序相同
Object-C 中数组能够存放任意类型的数据类型为[AnyObject]
Swift中数组有两种形式:
可变数组:用var修饰,数组的内容及长度可以任意修改
不可变数组:用let修饰,数组的内容及长度都不能修改
Object-C 数组中也有两种形式
不可变数组:let arr: NSArray = NSArray.init(objects: 10,”hello”,1.234)
可变数组: let arr: NSMutableArray = NSMutableArray.init(capacity:0)
将数组所有内容全部赋给另一个数组(用于表格、集合视图中)
let arr = NSArray.init(array: arr1)
let arr = NSArray.init(object: arr1)
创建空数组(4种):
let arr: [Int] = [Int]()
let arr: Array<String> = Array<String>()
let arr: [Double] = Array()
let arr: [Int] = []
使用简单方法创建数组:
var arr:[Int] = [1,2,3,4,5,6]
指定元素个数和元素内容:
var arr = Array<Int>(count :2,repeatedValue: 100)
//[100,100]
指定元素内容:
var arr = Array(arrayLiteral:“Hello World”)
判断数组中的元素是否为空
if arr.isEmpty{
print(“空”)
}
if arr.count == 0{
print(“空”)
}
访问数组的元素
根据下边查找:下标从0开始,最后一个元素下标 = 数组中的元素个数 - 1
遍历数组中的所有元素:
Swift:
for i in arr{
print(i)
}
for i in arr.count - 1{
print(arr[i])
}
Objective -C
for i in 0…arr.count - 1{
print(arr[i])
}
for i in arr{
print(i)
}
获取指定范围内的元素:
print(arr[0…2])
查找某个元素首次在数组中出现的位置:
if arr.contains(“Hello”){
print(arr.indexOf(“Hello”)!)
}
Objective - C:
if arr.containsObject(“Hello”){
print(arr.indexOfObject(“Hello”)) // 输出的是索引的地址
}
Objective - C 获取数组中第一个元素和最后一个元素
print(arr.firstObject)
print(arr.lastObject)
向数组中添加内容:
追加单个元素
arr.append(“Swift”)
Objective -C
arr.addObject(“Swift”)
追加整个数组
arr.appendContensOf([1,2,3,4,54])
Objective -C
arr.addObject([1,2,3,4,54])
使用加号追加新的内容
arr += [1,2,3,4,45]
向指定位置插入元素
arr.insert(“swift”,atIndex: 1) //插入单个元素
arr.insertContensOf([1,2,3,4], at : 0) //插入数组
Objective-C
arr.insertObject(“swift”,atIndex: 1)
通过下标区间插入元素
arr[0…2] = [1,”HELLO”,3]
删除数组元素
arr.removeFirst() //删除第一个元素
arr.removeLast() //删除最后一个元素
Swift
arr.removeAtIndex(3) //删除指定索引的元素
Objective-C
arr.removeObjectAtIndex()
Swift
arr.removeRange(0…4) //删除一定范围内的元素
Objective -C
arr.removeObjectInRange(NSRange.init(location:0,length: 1))
Swift
arr.removeAll() //清空整个数组
Objective -C
arr.removeAllObjects
Objective-C
arr.removeLastObject //删除最后一个元素
if arr.containsObject(“123”){ //删除指定元素,重复的会全部删除
arr.removeObject(“123”)
}
修改数组中的内容
arr[4] = “修改的内容” //修改指定下标的元素
arr.replaceRange(0…3,with:[3]) //修改一定范围内的元素
arr[0…3] = [1000,2000]
Objective -C
arr.replaceObjectAtIndex(0,withObject:”1234”)
数组排序
arr.sortInPlace //系统提供的排序函数,只能做升序
冒泡排序:
第一趟:0
100,998,-10,50,1,30
100,-10,998,50,1,30
100,-10,50,998,1,30
100,-10,50,1,998,30
100,-10,50,1,30,998 ------ 998
第二趟:1
-10,100,50,1,30,998
-10,50,100,1,30,998
-10,50,1,100,30,998
-10,50,1,30,100,998 -------100
第三趟:2
-10,50,1,30,100,998
-10,1,50,30,100,998
-10,1,30,50,100,998 -------50
第四趟:3
-10,1,30,50,100,998
-10,1,30,50,100,998 -------30
第五趟:4
-10,1,30,50,100,998 -------1
//冒泡排序外层控制趟数内层控制每一趟比较的次数
for i in 0..<tmp_arr.count - 1{
//比较的趟数=元素的个数-1
for j in 0..<tmp_arr.count - i - 1 {
if tmp_arr[j] < tmp_arr[j + 1] {
//if 语句就是实现交换功能
let tmp = tmp_arr[j]
//交换两个数的大小 使用第三个变量做桥接
tmp_arr[j] = tmp_arr[j + 1]
tmp_arr[j + 1] = tmp
}
}
}
将数组中的元素用指定的字符进行拼接
let arr1:NSArray = [1,2,3,”china”,98.0]
let str1 = arr1.componentJoinedByString(“-”)
//str1 = 1-2-3-china-98.0
将字符串按照指定的字符串进行分割(分割的结果是一个数组)
var arr2: NSArray = str1.componentSeparatedByString(“-”)
交换数组中元素的显示位置
arr.exchangeObjectAtIndex(0,withObjectAtIndex:2)
例子:
// 设计⼀个学生类,成员有姓名,年龄。 要求创建三个学生类对象,分别按年龄升序,名字降序进行排序
class Student {
var name: String
var age: Int
init(name: String,age: Int) {
self.name = name
self.age = age
}
}
let stu1 = Student.init(name: "stu1", age: 10)
let stu2 = Student.init(name: "stu2", age: 7)
let stu3 = Student.init(name: "stu11", age: 20)
let arrayStu = NSMutableArray.init(capacity: 0)
arrayStu.addObject(stu1)
arrayStu.addObject(stu2)
arrayStu.addObject(stu3)
for i in 0..<arrayStu.count - 1 {
for j in 0..<arrayStu.count - 1 - i {
var tmp1 = arrayStu[j] as! Student
var tmp2 = arrayStu[j + 1] as! Student
if tmp1.name < tmp2.name {
arrayStu.exchangeObjectAtIndex(j, withObjectAtIndex: j + 1)
}
}
}
5 数组 Swift/Object-C ——《Swift3.0从入门到出家》的更多相关文章
- 4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》
4 字符串 Swift and Object-C 字符串由多个字符组成,使用 “” 引起的内容 swift语言中提供了两种字符串:可变字符串和不可变字符串 可变字符串:字符串的内容可以修改,字符串 ...
- 9 闭包——《Swift3.0从入门到出家》
8 闭包 Swift语言中可以使用一块独立代码块替代函数的定义,称独立的代码块为闭包 闭包格式为: {(参数列表)->返回值类型 in 执行语句 } 例子: <1>使用闭包实 ...
- 8 函数类型——《Swift3.0从入门到出家
Swift语言中每一个函数都有它特定的数据类型,称其为函数类型 函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型 函数类型的格式为:参数列表的数据类型—& ...
- 7 函数——《Swift3.0从入门到出家
6 函数 函数就是对某个功能的封装,一个swift程序可能由多个函数组成 swift中定义函数的格式: func 函数名称(参数列表) —>函数返回值类型{ 函数体 return } 函数定义要 ...
- 10 结构体和类 - —— 《Swift3.0 从入门到出家》
Swift中的面向对象5个要素:枚举.结构体.类.协议.扩展 面向对象研究的是对象,完成一件事情需要多个对象参与,是生活的映射 Swift中结构体和类非常相似,也就是结构体能完成类的所有功能.结构体是 ...
- 3 循环语句——《Swift3.0从入门到出家》
3 循环语句 当一段代码被多次重复利用的使用我们就使用循环 swift提供了三种形式的循环语句 1.while 循环 2.repeat — while 循环 3.for — in 循环 while 循 ...
- 2 分支语句——《Swift3.0 从入门到出家》
2 分支语句 当程序面临多个选择,每一个选择都会执行不同的代码块,这个时候就要使用分支语句.常见的分支语句有: if 选择语句:if... if…else if…elseif…else if是现实生活 ...
- 6 字典和集合——《Swift3.0从入门到出家》
字典和集合 字典 字典是集合类型存放多个键值对,其中键是唯一的,不能重复 字典中存放的键值对是无序的,写入的顺序和读取的顺序可能不同 字典中存放的数据是任意类型 字典可以分为可变字典和不可变字典 创建 ...
- swift学习笔记 - swift3.0用GCD实现计时器
swift3.0之后,GCD的语法发生了翻天覆地的变化,从过去的c语法变成了点语法,下面是变化之后用GCD实现计时器的方法: 先贴代码: // 定义需要计时的时间 var timeCount = 60 ...
随机推荐
- 20145235李涛《网络对抗》Exp8 Web基础
基础问答 什么是表单 可以收集用户的信息和反馈意见,是网站管理者与浏览者之间沟通的桥梁. 表单包括两个部分:一部分是HTML源代码用于描述表单(例如,域,标签和用户在页面上看见的按钮),另一部分是脚本 ...
- SQLite教程
SQLite教程 http://www.runoob.com/sqlite/sqlite-date-time.html SQLite管理工具http://www.sqliteexpert.com/do ...
- bzoj 2748: [HAOI2012]音量调节
2748: [HAOI2012]音量调节 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 872 Solved: 577[Submit][Status] ...
- JMeter学习(二)工具简单介绍
一.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件, ...
- Redis 后台运行
编辑配置文件 vim {redis_home}/redis.conf 修改daemonize (默认为no,修改为yes) 启动redis{redis_home}/src/redis-server ...
- VMware与Windows主机交换文件
1. 安装 VMwareTool ,直接拖拽文件 2. 安装 VMwareTool,然后WMare配置 共享文件夹 3. 通过 U盘 4. for Linux:Windows安装 SSH Client ...
- NSNumber 与NSValue
NSNumber与NSValue关系与作用 .由于集合里只能存放对象,不可以存放基本数据类型,所以我们有时候需要讲一些对象比如基本数据类型,结构体等存到NSDictionary NSArray中,我们 ...
- Android获取所有应用的资源id和对应的uri
背景 在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大 你可以获取string,co ...
- LeetCode第[26]题(Java):Remove Duplicates from Sorted Array 标签:Array
题目难度:Easy 题目: Given a sorted array, remove the duplicates in-place such that each element appear onl ...
- 20165332 学习基础和C语言基础调查
学习基础和c语言基础调查 一.技能学习经验 从小学过很多东西,架子鼓.电子琴.街舞.吉他.书法.美术......爱好也有很多,乒乓球.篮球.唱歌......这么多项技能,要说那一项比大多数人好,还真的 ...