swift study 08. 컬렉션 (Collection)

jess·2022년 7월 10일
0

Swift

목록 보기
8/19
post-thumbnail

🍃 출처 : 앨런 swift 문법 마스터 스쿨

📓 컬렉션 (Collection)

  • 데이터를 효율적으로 관리하기 위한 자료형
  • 데이터의 저장, 표시
    1) Array (배열) : 데이터를 순서대로 저장
    2) Dictionary (딕셔너리) : 데이터를 키와 값으로 하나의 쌍을 만들어 관리, 순서가 없는 컬렉션
    3) Set (집합) : 수학에서 집합과 같은, 순서가 없는 컬렉션

📓 1) 배열 (Array)

  • 데이터를 순서대로 저장하는 컬렉션 (자동으로 순번 지정)
var numsArray = [1,2,3,4,5]
  • [] 대괄호로 묶는다.
  • 1개의 배열에는 동일한 타입의 데이터가 들어간다.
  • (순서가 있기에) 값은 중복이 가능하다.
  • 인덱스 시작은 0부터, 각각의 데이터는 요소(element)라고 한다.

타입 표기

let strArray1: [String] = []

빈 배열의 생성

let emptyArray1: [Int] = []
  • 빈 배열에는 항상 타입을 써주어야 한다. (어떤 데이터를 담을것인지 모르니)
    : 배열에 추가할 항목의 유형을 지정해 주는 것

배열의 기본 기능

numsArray.count       // 배열 안에 몇 개 들어있는지
numsArray.isEmpty     // t / f
numsArray.contains(1) // 1을 포함하고 있는지
numsArray.randomElement() // 랜덤으로 값 하나 추출
numsArray.swapAt(0, 1) // 값들의 위치 바꾸기

배열의 인덱스

array [0]
array [인덱스]
array.first
array.last
array.startIndex
array.endIndex

배열의 삽입

var alphabet = ["A","B","C","D","E"]
alphabet.insert("C", at: 4)
alphabet.append(5)


alphabet[0] = "a"  // 요소교체
alphabet[0...2] = ["x","y","z"] // 범위교체
alphabet[0...1] = [] // 원하는 범위 삭제

alphabet += ["H"] // 추가
alphabet.remove(at: 2) // 어떤 item이 배열에서 제거 되는데, 제거한 item을 리턴. 배열에는 더이상 없지만, 빼내서 가지고 있다가 받는 곳이 있으면 넘기고 아니면 버린다 

📓 2) 딕셔너리 (Dictionary)

  • 데이터를 키와 값으로 하나의 쌍으로 만들어 관리하는 컬렉션
let dic: Dictionary<String, String> = ["A": "Apple", "B":"Banana"]
  • 키 값은 유일해야 함(중복 불가능), 값은 중복 가능
  • 동일한 타입 쌍의 데이터만 담을 수 있다.
    ex) [Int:String] , [String:String]
  • 딕셔너리의 값(value)에 중첩 사용 가능
  • Key 값은 hashable 해야 함

기본

dic.count
dic.isEmpty
dic.randomElement()

요소 접근

dic["A"]

키/값들

dic.keys    //컬렉션
dic.values  //컬렉션
dic.keys.sorted() //배열
dic.values.sorted() //배열

업데이트

dic["A"] = "Apple"
dic.updateValue("City", forkey: "C")

삭제

dic["B"] = nil
dic.removeValue(forKey: "A")
dic.removeAll

📓 3) 집합 (Set)

  • 수학에서의 집합과 비슷한 연산을 제공하는, 순서가 없는 컬렉션
let set: Set <Int> = [1,1,2,3]
  • 배열과 구분이 안되기 때문에 대괄호로 묶음, 반드시 생성 시 타입 선언을 해야 함
  • 요소값을 중복으로 넣어도, 집합의 의미 상 요소 중복 저장 안됨
  • 따라서 append 함수를 제공하지 않음
    var set: Set = [1,1,2,2,3,3,3] // {2,3,1}
    print(set) // [2,3,1] ➡️ 출력 할 때마다 순서 바뀜

📓 4) KeyValueParis

  • 딕셔너리와 유사한 형태이지만, 배열처럼 순서가 있는 컬렉션
  • key 값이 hashable할 필요 없음 (검색 알고리즘 상 빠르지 않음)
  • key 값이 동일한 것도 가능
let introduce: KeyValuePairs = ["first":"Hello","second":"MyName","third":"is"]

기본

introduce.count
introduce.isEmpty

요소에 접근

print("\(introduce[0].key)\(introduce[0].value)입니다.")
  • 배열처럼 인덱스로 접근 가능
  • 요소에서는 튜플 방식으로 접근

0개의 댓글