1 // 2 3 // ViewController.swift 4 5 // Swift-Array 6 7 // 8 9 // Created by luorende on 16/9/12. 10 11 // Copyright © 2016年 luorende. All rights reserved. 12 13 // 14 15 16 17 import UIKit 18 19 20 21 class ViewController: UIViewController { 22 23 24 25 override func viewDidLoad() { 26 27 super.viewDidLoad() 28 29 // Do any additional setup after loading the view, typically from a nib. 30 31 32 33 34 35 /** 36 37 數組 38 39 數組的介紹 40 41 數組(Array)是一串有序的由相同類型元素構成的集合 42 43 數組中的集合元素是有序的,可以重復出現 44 45 Swift中的數組 46 47 swift數組類型是Array,是一個泛型集合 48 49 數組的初始化 50 51 數組分成:可變數組和不可變數組 52 53 使用let修飾的數組是不可變數組 54 55 使用var修飾的數組是可變數組 56 57 */ 58 59 60 61 62 63 64 65 // 定義一個可變數組,必須初始化才能使用 66 67 var array1 : [String] = [String]() 68 69 print(array1) 70 71 // 定義一個不可變數組 72 73 let array2 : [NSObject] = ["age", 18] 74 75 print(array2) 76 77 // 在聲明一個Array類型的時候可以使用下列的語句之一 78 79 // 可變數組類型,其數組中值必須為字符串 80 81 82 83 var stuArray1:Array<String> 84 85 var stuArray2: [String] 86 87 // 聲明的數組需要進行初始化才能使用,數組類型往往是在聲明的同時進行初始化的 88 89 // 定義時直接初始化 90 91 var array = ["why","only","you"] 92 93 // 先定義,后初始化 94 95 var array : Array<String> 96 97 array = ["why", "only", "you"] 98 99 100 101 102 103 104 105 106 107 // 數組的長度 108 109 let Arr = ["hell0","swift"] 110 111 let count = Arr.count //count 屬性 返回 數組的長度 112 113 print( "count=\(count)") 114 115 /** 116 117 運行結果:count=2 118 119 */ 120 121 122 123 124 125 126 127 //數組中變量值的修改 128 129 var str = [81,82,85] 130 131 str[2] = 83 //str[2] 指的是數組中索引為2的變量值即85 重新賦值為83 132 133 print("str=\(str)") 134 135 136 137 138 139 140 141 142 143 //數組的追加---appped()函數 144 145 var arr = [1,2] //定義整形數組變量arr 146 147 arr.append(3)//append(3) 是在arr數組的尾端追加變量值3到數組中 即數組長度增加1 148 149 print(" arr = \(arr) 長度=\(arr.count)") 150 151 /** 152 153 運行結果: arr = [1, 2, 3] 長度=3 154 155 */ 156 157 158 159 160 161 162 163 164 165 166 167 //1 訪問元素 168 169 170 171 var test1Array=["你好","Swift","我在學習Swift"] 172 173 print("第一個元素:\(test1Array.first)") 174 175 print("最后一個元素:\(test1Array.last)") 176 177 178 179 //2 獲取數組元素的個數 180 181 print("數組個數為:\(test1Array.count)") 182 183 184 185 186 187 // 另外一種方式訪問素組就是通過循環方式,可以采用loop方式或者for-in循環。 188 189 var sum = 0 190 191 for number in literalArray 192 193 { 194 195 sum += number 196 197 } 198 199 200 201 // 這段代碼實現的是遍歷數組,並將素組的每個元素相加統計他們的和。 202 203 204 205 206 207 208 209 210 211 // 3 可變數組的插入 Insert(變量值 , atIndex: 索引) 212 213 //數組的追加 Insert(變量值 ,atIndex:索引) 214 215 var arr2 = [10,11] 216 217 arr2.insert(9,atIndex:0) // 在數組arr中0的位置插入變量值9 數組長度加1 218 219 print("arr2=\(arr2) 長度=\(arr2.count)") 220 221 /** 222 223 運行結果:arr2=[9, 10, 11] 長度=3 224 225 */ 226 227 228 229 230 231 232 233 // 可變數組的移除 removeAtIndex(索引),removeLast() 234 235 // 數組的移除 removeAtIndex(索引)數組指定位置移除變量值 236 237 var arr3 = [100,101,102] 238 239 arr3.removeAtIndex(0)//移除數組arr3中索引為0 的變量值,數組長度減1 240 241 print("arr3 =\(arr3) 長度=\(arr3.count)") 242 243 244 245 /** 246 247 運行結果:arr3 =[101, 102] 長度=2 248 249 */ 250 251 252 253 254 255 256 257 // 數組的移除 removeLast() 數組尾端移除變量值 258 259 var arr4 = [200,201,202] 260 261 arr4.removeLast() //移除數組arr3中尾端的變量值,數組長度減1 262 263 print(" arr4 =\(arr4) 長度=\(arr4.count)") 264 265 /** 266 267 運行結果:arr4 =[200, 201] 長度=2 268 269 */ 270 271 272 273 274 275 276 277 278 279 //創建空數組 280 281 /** 282 283 1: [Int] () 是整形空數組 284 285 2: array 數組變量 被let 修辭 ,array數組只能訪問 286 287 */ 288 289 // let array = [Int] () 290 291 292 293 294 295 /** 296 297 1: [Int] () 是整形空數組 298 299 2: arr1 數組變量 被var 修辭 ,array數組是可變數組,可以動態修改 300 301 */ 302 303 304 305 306 307 308 309 310 311 //判斷數組是否為空 312 313 let arr5 = [Int] () 314 315 if arr5.isEmpty { //isEmpth 是判斷數組是否是空數組 316 317 print("arr5 數組為空") 318 319 } 320 321 else{ 322 323 print("arr5 數組不為空") 324 325 } 326 327 /** 328 329 運行結果 330 331 arr5 數組為空 332 333 */ 334 335 336 337 338 339 340 341 //3 判斷數組是否為空 342 343 let test3Array:[String]=[] 344 345 346 347 //方法1,根據數組元素的個數判斷 348 349 if test3Array.count==0{ 350 351 print("此數組為空") 352 353 } 354 355 //方法2,i 356 357 // sEmpty 358 359 if test3Array.isEmpty { 360 361 print("此數組為空") 362 363 } 364 365 366 367 368 369 370 371 372 373 374 375 // 數組的遍歷 376 377 var array5 = ["why","only","you"] 378 379 // 遍歷數組 380 381 for i in 0..<array5.count { 382 383 print(array5[i]) 384 385 } 386 387 // for in方式 388 389 for item in array5 { 390 391 print(item) 392 393 } 394 395 // 設置遍歷的區間 396 397 for item in array5[0..<2] { 398 399 print(item) 400 401 } 402 403 404 405 406 407 408 409 410 411 412 413 // 修改數組 414 415 // var定義的數組才能修改,有幾種方式可以修改數組。 416 417 // 增加數組元素 418 419 // 在數組末尾增加元素或者插入元素到指定的index,下面介紹通過append和+=方法增加元素 420 421 var emptyArray = [Int]() 422 423 emptyArray.append(5) 424 425 emptyArray += [5] 426 427 428 429 // 上面2個表達式效果是相同的。值得注意的一點是,使用+=操作符時,右邊的必須為數組,即使只有一個元素時也要為數組,還有就是通過這種方式你可以一次性給數組增加多個值,如: 430 431 emptyArray += [9, 8, 7, 6] 432 433 434 435 // 現在,emptyArray含有了[5,5,9,8,7,6]這些元素值。 436 437 // 可以通過insert方法插入元素到數組的任意位置。 438 439 emptyArray.insert(12, atIndex: 2) 440 441 //emptyArray now is [5, 5, 12, 9, 8, 7, 6] 442 443 // 我們在第三個位置插入12。 444 445 // 清空數組方法: 446 447 emptyArray.removeAll() 448 449 //emptyArray now is empty once more 450 451 // removeAll方法接受一個參數,允許清空數組時是否保持數組的容量,該參數默認值為false,即將數組的capacity容量設置為0。如果你想保持容量,可以參考下代碼: 452 453 var originalCapacity = emptyArray.capacity // 454 455 originalCapacity = 12 456 457 emptyArray.removeAll(keepCapacity: true) 458 459 var newCapacity = emptyArray.capacity // 460 461 newCapacity = 12 462 463 // 由上代碼可以看出emptyArray在需要重新分配內存之前可以存儲12個值,然而使用removeAll(),newCapcity則等於0。 464 465 466 467 468 469 470 471 472 473 474 475 // 基於數組創建新數組 476 477 // 可以采用+合並2個數組為一個數組,它返回的新數組順序按照操作符左邊的數組到右邊數組的元素一次排列。 478 479 let arrayOne = [1,2,3,4,5] 480 481 let arrayTwo = [30, 40, 50] 482 483 let bothArrays = arrayOne + arrayTwo 484 485 print(bothArrays)// 正常情況下是從小到大的順序依次排列 486 487 //bothArrays now is 1, 2, 3, 4, 5, 30, 40, 50] 488 489 // 調用reserse方法反轉數組元素也會返回一個新的數組。 490 491 let normalArray = [20, 21, 22, 23, 24, 25] 492 493 let reversedArray = normalArray.reverse() //從大到小的順序 494 495 print(reversedArray) 496 497 //reversedArray now is [25, 24, 23, 22, 21, 20] 498 499 500 501 502 503 504 505 // 數組合並 506 507 // 注意:只有相同類型的數組才能合並 508 509 let array00 = ["why", "lmj","lnj"] 510 511 let array10 = ["yz", "wsz"] 512 513 let array20 = array00 + array10; 514 515 print(array20) 516 517 // 不建議一個數組中存放多種類型的數據 518 519 let array30 = [2, 3, "why"] 520 521 let array40 = ["yz", 23] 522 523 let array50 = array30 + array40 524 525 print(array50) 526 527 528 529 530 531 } 532 533 534 535 override func didReceiveMemoryWarning() { 536 537 super.didReceiveMemoryWarning() 538 539 // Dispose of any resources that can be recreated. 540 541 } 542 543 544 545 546 547 }