Swift 数组
2017-11-14 本文已影响2人
追逐_chase
Swift.png
数组的简单介绍
- 数组是一串有序的由相同类型元素构成的集合
- 数组中的元素是有序的,可以重复出现
- 在Swift中数组(Array),是一个泛型集合
//苹果 官方给的API文档描述
Arrays are one of the most commonly used data types in an app.
You use arrays to organize your app’s data.
Specifically, you use the Array type to hold elements of a single type,
the array’s Element type. An array can store any kind of elements—from integers to strings to classes.
Swift makes it easy to create arrays in your code using an array literal: simply surround a comma separated list of values with square brackets. Without any other information,
Swift creates an array that includes the specified values, automatically inferring the array’s Element type. For example:
数组的创始化
- 数组分成:可变数组 和 不可变数组
- 使用 let修饰的数组 是不可变数组
- 使用var修饰的数组是 可变数组
//创建数组的格式:
var stuArray1:Array<类型>
var stuArray2: [类型] // [ ]代表数组, 【】里面的类型代表数组存放的 数据类型
// 1.定义一个可变数组,必须初始化才能使用
var array1 : [String] = [String]()
// 定义一个不可变数组
let array2 : [NSObject] = ["why", 18]
// 2.创建 可变数组 ,可变数组必须要初始化才能使用
var emptyDoubles: [Double] = [1.0,2.0,3.0]
var emptyFloats: Array<Float> = Array()
//3.创建数组 ,以固定数量的默认值初始化的数组
var digitCounts = Array(repeating: 0, count: 10)
print(digitCounts);
//打印结果: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
//4. init初始化数组,空数组 Any是数组里面可以存放任意的值
var array3 = Array<Any>.init();
//5.初始化一个包含元素的数组
var array4 = Array.init(_:"s");
- 声明的数组需要进行初始化才能使用,数组类型往往是在声明的同时进行初始化的
// 定义时直接初始化
var array1 = ["why", "nan", "NV"]
// 先定义,后初始化
var array2 : Array<String>
array = ["why", "ttct", "team"]
Inspecting an Array 数组的检查
var array1 = ["why", "ssss", "cccc"]
//数组的个数
array1.count;
//打印结果: 3
//属性 capacity 容量
var numbers = [10, 20, 30, 40, 50]
// numbers.count == 5
// numbers.capacity == 5
numbers.append(contentsOf: stride(from: 60, through: 100, by: 10))
print(numbers);
//打印结果: [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
//判断是否为空 isEmpty;
array1.isEmpty; 返回的是一个bool值
数组的增,删,改,查
- 增加元素
//声明一个 含有any元素的数组
var array = Array<Any>();
//增加元素
array.append("cc");
array.append(10);
//替换 第一个元素
array[0] = 9;
//打印结果:"[9, 10]\n"
//添加一个序列元素
var numbers = [1, 2, 3, 4]
numbers.append(contentsOf: 10...15);
print(numbers);
//打印结果:[1, 2, 3, 4, 10, 11, 12, 13, 14, 15]
//插入元素 第3个位置 插入100
numers.insert(100, at: 3);
// 打印结果: [1, 2, 3, 100, 4, 10, 11, 12, 13, 14, 15]
//注意:如果没有明确指出数组的数据类型,而是有数据类型 自动推到的数据类型,在增加元素的时候,必须和推到出的数据类型一致,否侧会报错。
- 删除
//定义一个数组
var numbers = [1, 2, 3, 4]
//移除 下标为1的元素
numbers.remove(at: 1);
//打印的结果: [1, 3, 4]
//移除第一个元素
numbers.removeFirst();
//移除 一个数量的元素,移除钱2个元素
numbers.removeFirst(2);
//同理属性 removeLast(),removeLast(3)
//移除所有的元素
numbers.removeAll()
//移除一个 区间内的元素
var measurements = [1.2, 1.5, 2.9, 1.2, 1.5]
measurements.removeSubrange(1..<4)
print(measurements)
// Prints "[1.2, 1.5]"
- 更改
//数据类型 要一致额
var nums = [10, 20, 30, 40, 50]
nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
print(nums)
// Prints "[10, 1, 1, 1, 1, 1, 50]"
//修改第一个值
nums[0] = 100;
- 查找元素 Finding Elements
//Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate
// 返回一个布尔值,该值指示序列是否包含满足给定谓词的元素。
/
contains(where:)
var numbers = [1, 2, 3, 4]
if numbers.contains(3) {
print("是bool值")
}
// 查找最大值 和 最小值
numbers.max();
numbers.min();
//查找指定位置的元素 的下标 下标2对应的是3,3后是4
//下标2后面的元素
let cc = numbers.index(after: 2);
print(numbers[cc]);
查找元素.jpg
数组的合并
//注意:数组的合并必须是 相同类型的数组 才可以合并
//错误的写法,类型不匹配
// var time = [1,2,3,4];
// var numbers = ["cc", "ss", "sd", "sh"]
// time + numbers;
//正确写法
var time:[Any] = [1,2,3,4]; // 这个数组 可以存放任意类型的数据
var numbers:[Any] = ["cc", "ss", "sd", "sh"] ; // 这个数组 可以存放任意类型的数据
time + numbers;
数组的遍历
//创建数组
var array:[Any] = [1,2,3,4,5,"cc","dd"];
//遍历索引
for i in 0..<array.count {
print(array[i]);
}
//遍历值
for item in array {
print(item);
}
//block
(array as NSArray).enumerateObjects { (value, index, stop) in
print("+++++ + \(value)");
};
//
for (index,value) in array.enumerated() {
print("下标\(index),对应的值:\(value)");
}