iOS/Swift

[Swift] 컬렉션 타입 : Array 메서드

하노 Hano 2022. 2. 13. 18:41

안녕하세요 하노입니다 :)

 

오늘은 지난 시간에 이어 Array 관련 메서드에 관하여 알아보겠습니다.


Array 멤버 접근

1. 인덱스로 접근

당연하게 Array 내 멤버(요소)에 접근할 수 있습니다.

var alphabets = ["A", "B", "C", "D"]

print(alphabets[0])		// A
print(alphabets[1])		// B

Array 내 멤버에 접근할 때는 위의 코드처럼 [접근할 멤버의 index] 로 접근합니다.

Array의 인덱스는 0부터 카운트합니다.

 

혹시나 Array에서 인덱스에 해당하는 값이 없으면 에러가 나기 때문에 주의해서 사용해야 합니다!

 

2. 범위로 접근

Swift는 Array에서 범위 연산자를 사용하여 멤버에 접근할 수 있습니다.

var alphabets = ["A", "B", "C", "D"]

print(alphabets[0])         // A
print(alphabets[0...2])     // ["A", "B", "C"]

위의 코드처럼 인덱스와 범위 연산자를 사용하면 해당 범위 내 멤버에 접근할 수 있습니다.

 

범위 연산자를 사용할때도 위와 마찬가지로 인덱스, 범위에 해당하는 값이 없으면 에러가 나기 때문에

주의해서 사용해야 합니다!

 

3. 그 외 접근 방법

import Foundation

var alphabets = ["A", "B", "C", "D"]

print(alphabets[alphabets.startIndex])	// A
print(alphabets.first)			// Optional("A")
print(alphabets.last)			// Optional("D")
  • .startIndex : Array의 첫 번째 인덱스에 대한 멤버에 접근
  • .first : Array의 첫 번째 인덱스에 대한 멤버에 접근
  • .last : Array의 마지막 번 째 인덱스에 대한 멤버에 접근

이 중에서 .first 와 .last를 사용하여 출력하면 Optional("")으로 출력되는 것을 확인할 수 있는데요.

Optional에 대해선 나중에 기회가 되면 다루도록 하겠습니다.

 

 

만약 이 Optional을 떼고 출력하고 싶다면

print(alphabet.first!)	// A
print(alphabet.last!)	// D

 위 코드처럼 끝에 !(느낌표) 를 붙여주면 Optional("")을 제외한 값이 출력되는 것을 볼 수 있습니다.

하지만 무턱대고 !(느낌표) 를 사용하면 큰일 날 수가 있는데요. 이 것 또한 Optional을 다룰 때 자세하게 살펴보겠습니다!

 

 

Array 멤버 정렬

Array 내 멤버에 관하여 오름차순, 내림차순으로 정렬할 수 있습니다.

var integers = [1, 10, 2, 20, 3, 30]

print(integers.sorted())	// [1, 2, 3, 10, 20, 30]

intgers.sort()
print(integers)			// [1, 2, 3, 10, 20, 30]

제가 위 코드에서 두 가지 방식을 사용하였는데요. sorted()와 sort()는 큰 차이가 있습니다.

  • .sort() : Array 내 멤버를 오름차순으로 정렬 후 Array에 저장 
  • .sorted(): Array 내 멤버를 오름차순으로 정렬 (저장되지 않음)

다시 말하면

.sort()를 사용할 경우, Array 내 멤버가 오름차순으로 정렬된 후 Array에 저장 (멤버의 인덱스가 바뀜)하고,

.sorted()를 사용할 경우 Array 내 멤버가 오름차순으로 정렬되지만 Array에 저장되진 않습니다!

 

 

다음은 내림차순 정렬입니다.

var alphabets = ["X", "Y", "Z", "A", "B"]

for char in alphabets.reversed() {
    print(char, terminator: "")
}
// BAZYX

alphabets.reverse()

print(alphabets)    // ["B", "A", "Z", "Y", "X"]

내림차순도 두 가지 방식으로 사용하였는데요. 보시다시피 .reversed() 와 reverse()도 차이가 있습니다.

  • .reverse() : Array 내 멤버의 인덱스를 거꾸로 정렬하여 Array에 저장
  • .reversed() : Array 내 멤버의 인덱스를 거꾸로 정렬 (저장되지 않음)

오름차순에 쓰이는 .sorted(), .sort()와 달리 .reverse(), .reversed() 는 인덱스를 기준으로 내림차순으로 정렬합니다.

 

 

그럼 멤버를 기준으로 어떻게 내림차순으로 정렬할까요??

var alphabets = ["X", "Y", "Z", "A", "B"]

alphabets.sort(by: >)
print(alphabets)	// ["Z", "Y", "X", "B", "A"]

위에 코드처럼 sort(by: >)를 사용하면 됩니다!

 

 

Array 크기 구하기

var alphabets = ["X", "Y", "Z", "A", "B"]

print(alphabets.count)	// 5

Array의 크기를 구할 때는 .count를 사용하여 구합니다.

 

Array 내 최대•최솟값 구하기

var intgegers = [1, 2, 3, 4, 5]

print(intgegers.min())	// Optional(1)
print(intgegers.max())	// Optional(5)

최대 최솟값을 구할 때는

  • .min() : 최솟값
  • .max(): 최대값

을 사용합니다! 다만 Optional()로 감싸져 있는 형태로 출력되는데요. 이 것 또한 나중에 Optional을 다룰 때 이야기하도록 하겠습니다.

당장 지금 보기 싫어서 지우고 싶다면 !(느낌표) 를 옆에 써주면 됩니다!

 

 

 

 

오늘은 지난 시간에 이어 Array에 대하여 알아봤습니다!

사실 제가 이번 시간에 다룬 Array 관련 메서드는 극히 일부에 불과합니다...ㅎㅎ

저도 Array 관련 메서드를 필요할 때마다 검색하여 찾는 편인데요.

자주 쓰는 것들은 자연스럽게 외워지더라고요!

 

여러분이 보시면서 이런 기능을 하는 메서드도 있어?? 하는 것도 있으니 찾아보시면 많은 도움이 되실 거예요!

 

그럼 컬렉션 타입 : Array 편은 여기서 끝내도록 하겠습니다.

감사합니다!