Collection 개념 정리 들어가실게요.

sonny·2024년 9월 20일
1

iOS 파헤치기

목록 보기
12/12
post-thumbnail

Collection 타입의 기본으로는 Array, Dictionary, Set 이 있고 각 타입은 고유한 특징과 용도를 가지고 있다.

Array

Array같은 타입의 값들을 순서대로 저장하는 컬렉션이다. 순서가 있는 경우 배열에 있는 값들은 순서가 정해져 있을 것이다. 예를 들어, [1, 2, 3]에서 1은 첫 번째, 2는 두 번째, 3은 세 번째이다. 그리고 너그럽게 중복된 값도 허용해주는데 같은 값을 여러 번 넣을 수 있다. 예를 들어, [2, 1, 2, 3]처럼 중복된 2가 있을 수 있다.

Array 예시

var fruits: [String] = ["석류", "바나나", "거봉"]
  • 여기서 fruits는 과일 이름을 담고 있는 배열이다.

Dictionary

Dictionary이 쌍으로 저장된 것을 말한다. 그리고 그 를 이용하여 을 찾을 수 있다. 대신 는 고유해야 하는 점을 알고 있어야 하고 같은 키를 여러 번 사용할 수 없는 점 또한 인지해야 한다. 예를 들어, ["사과": 1, "바나나": 2]에서 "사과"라는 키는 하나만 존재해야하며, 대신 키는 고유해야하지만 값은 중복이 가능하기에 같은 값을 여러 키에 할당하는 것은 가능하다.

Dictionary 예시

var studentGrades: [String: Int] = ["Mimi": 160, "Ron": 169]
  • 여기서 studentGrades는 학생의 이름을 로, 점수를 으로 저장한 딕셔너리다.

Set

Set같은 종류의 값들을 모아놓지만 중복된 값은 허용하지 않는다. 그리고 순서가 없는 것이 특징인데, 집합에 있는 값들은 어떠한 순서도 없다. 예를 들어 [1, 2, 3][2, 3, 1]은 같은 집합으로 간주된다. 하지만 여기서 같은 값을 여러번 넣게 되면 한 번만 저장이 된다. 즉 중복된 값을 허용하지 않는다는 것인데, 예를 들어 Set([1, 2, 2, 3])의 경우 2가 두 번 중복되기에 [1, 2, 3]이 된다.

Set 예시

var Fruits: Set<String> = ["사과", "바나나", "사과"] // "사과"는 중복되어 저장되지 않음

Initializer

그리고 컬렉션의 특징 중 알게 된 것 중 이니셜라이저 라고 다양한 방법으로 초기화 할 수 있는 특징이 있다고 한다.

이니셜라이저는 객체를 생성할 때 초기 상태를 설정하는 메서드인데, 클래스구조체의 인스턴스를 만들 때 호출되고, 주로 속성 값초기화 하는데 사용된다. 여기서 궁금한 점이 생겼는데 굳이 왜 초기화를 해야하지? 라는 생각이 들었다. 초기값을 지정했으면 그 값을 꺼내오면 되는 것인데 왜?

그 이유는 클래스구조체의 인스턴스가 유효한 상태로 만들어지기 위해서 라고 한다. 이게 무슨 말이냐하면 초기화를 하지 않을 경우 속성들이 올바른 값 없이 사용될 수 있기 때문에 안정성을 보장하기 위해 초기화가 필요하다는 것.

class Student {
    var name: String
    var age: Int

    // 이니셜라이저
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
}

만약 여기서 이니셜라이저를 사용하지 않으면 nameage 속성이 무엇인지 알 수 없는 상태로 남아있을 수 있다. 이름도 나이도 모르는 학생 객체가 생긴다면 그 객체는 의미가 없고, 나중에 문제가 생길 수 있기 때문에 이러한 인스턴스를 만들 때는 모든 속성이 초기화 되어야 한다는 규칙이 있다고 한다.

초기화가 되지 않은 속성은 존재할 수 없다라는 것이다. 초기화는 쓸대 없는 코드늘림이 아닌 객체가 의미 있는 상태로 존재할 수 있게 도와주고, 속성들이 올바르게 초기화 되지 않으면 프로그램이 오류를 일으킬 수 있어 안정성을 보장하기 위해서도 반드시 필요하기에 객체를 유효한 상태로 만드는 아주 중요한 역할을 한다고 볼 수 있다.

요약하자면,

  • Array: 순서가 있는 값들의 리스트, 중복 가능.

  • Dictionary: 키와 값 쌍으로 저장, 키는 고유해야 하고 값은 중복 가능.

  • Set: 중복 없는 값들의 집합, 순서 없음.

profile
iOS 좋아. swift 좋아.

0개의 댓글