1. 程式人生 > >數組的基本使用

數組的基本使用

city ces 保持 end array 協議 sem 知識點 依然

/*

數組定義:

OC:

有值數組

NSArray *arr0 = @[@1, @2, @3];

NSArray *arr1 = [NSArray arrayWithObjects:@1, @2, @3, nil];

NSLog(@"%@", arr1);

空數組

NSArray *arr2 = @[];

NSArray *arr3 = [NSArray array];

NSLog(@"%@", arr3);

不可變數組:NSArray

可變數組:NSMutableArray

*/

//有值數組

var arr0 = [1,2,3]

var arr1: Array = [1,2,3]

var arr2: Array<Int> = [1,2,3]

var arr3: [Int] = [1,2,3]

// var arr4: Int[] = [1,2,3] // 早期寫法 已廢棄

//空數組

//var arr5 = [] // 已廢棄

var arr6 = [Int]()

var arr7 = Array<Int>()

print(arr7)

//不可變數組

let arr8 : [Int] = []

//可變數組

var arr9 : [String] = [String]()

/*

元素類型

OC:

NSArray *arr = @[@1, @"lnj", @1.75];

NSLog(@"%@", arr);

*/

var arr10 = [1,"hjq",1.65] as [Any]

print(arr10)

print(arr10[2])

// 打印結果: [1, "hjq", 1.6499999999999999]

// 1.65

//如果想明確表示數組中存放的是不同類型的數據, 可以使用Any關鍵字, 表示數組中可以存放不同類型的數據

var arr11:Array<Any> = [1,"hjq",1.75]

print(arr11)

print(arr11[2])

// 打印結果: [1, "hjq", 1.75]

// 1.75

/*

數組操作

1.獲取長度

OC:

NSArray *arr = @[@1, @2, @3];

NSLog(@"%tu", arr.count);

*/

var arr12 = [1,2,3]

print(arr12.count)

/*

2.判斷是否為空

OC:

NSArray *arr = @[];

NSLog(@"%d", arr.count != 0);

*/

var arr13 = [1,2,3]

print(arr13.isEmpty)

/*

3.檢索

OC:

NSArray *arr = @[@1, @2, @3];

NSLog(@"%@", arr[0]);

*/

var arr14 = [1,2,3,4]

print(arr14[0])

/*

4.追加

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr addObject:@4];

NSLog(@"%@", arr);

*/

var arr15 = [1,2,3]

arr15.append(4)

print(arr15)

var arr16 = [1,2,3]

arr16 += [4]

print(arr16)

arr16 += arr16[0...1] // 也可以借助自己數組元素追加

print(arr16)

/*

5.插入

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr insertObject:@4 atIndex:0];

NSLog(@"%@", arr);

*/

var arr17 = [1,2,3]

arr17.insert(4, at: 0)

print(arr17)

/*

6.更新

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

arr[0] = @8;

NSLog(@"%@", arr);

*/

var arr18 = [1,2,3]

arr18[0] = 0

print(arr18)

/*

7.刪除

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr removeObject:@1];

NSLog(@"%@", arr);

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr removeLastObject];

NSLog(@"%@", arr);

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr removeAllObjects];

NSLog(@"%@", arr);

*/

var arr19 = [1,2,3]

arr19.remove(at: 0)

print(arr19)

var arr20 = [1,2,3,4]

arr20.removeLast()

print(arr20)

var arr21 = [1,2,3,4]

arr21.removeFirst()

print(arr21)

var arr22 = [1,2,3,4]

arr22.removeAll(keepingCapacity: true) // 是否保持容量, 如果為true, 即使刪除了容量依然存在, 容量是2的倍數

print(arr22)

print(arr22.capacity)

//註意: 如果數組是一個不可變數組不能更新/插入和刪除

//第一個版本的不可變數組是可以修改的

/*

Range

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

[arr removeObjectsInRange:NSMakeRange(0, 2)];

NSLog(@"%@", arr);

*/

//移除某區間位置的數組元素

var arr23 = [1,2,3]

//arr22.removeRange(Range(start: 0, end: 1)) 2.0寫法 已廢棄

arr23.removeSubrange(0...1)

print(arr23)

var arr24 = [1,2,3]

arr24.replaceSubrange(0..<1, with: [8])

print(arr24)

// 其實Range就是半閉區間

var range = 0...5

//range = 99 // 通過報錯可以推斷出類型

print(range) // 通過答應也可以推斷出類型

/// 這個知識點需要再探索一次 range

//var range1:Range<Int> = 0...5

//var range2:Range<String>; // 必須遵守ForwardIndexType協議

// start 起點 end 終點

//var range3:Range<Int> = Range(start: 0, end: 5)

//var range4:Range<Int> = 0..<5

//print(range3)

//print(range4)

/*

數組的批量操作

OC:

NSMutableArray *arr = [NSMutableArray arrayWithObjects:@1, @2, @3, nil];

NSRange range = NSMakeRange(0, 2);

// [arr replaceObjectsInRange:range withObjectsFromArray:@[@99, @88]];

[arr replaceObjectsInRange:range withObjectsFromArray:@[@99, @88, @77, @66]];

NSLog(@"%@", arr);

*/

var arr = [1,2,3]

//arr[0...1] = [99,98]

//arr[0...1] = [99,88,77]

//等價於上一行代碼

arr.replaceSubrange(0...1, with: [99,88,77])

print(arr)

/*

4.遍歷

OC:

NSArray *arr = @[@1, @2, @3];

for (int i = 0; i < arr.count; i++) {

NSLog(@"%@", arr[i]);

}

for (NSNumber *number in arr) {

NSLog(@"%@", number);

}

*/

var arr1 = [1,2,3]

// 2.0

//for var i = 0 ; i < arr1.count ; i++

//{

// print(arr1[i])

//}

// 3.0

for i in 0..<arr1.count

{

print(arr1[i])

}

for number in arr1

{

print(number)

}

//取出數組中某個區間範圍的值

var arr2 = [1,2,3]

for number in arr2[0..<3]

{

print(number)

}

數組的基本使用