하루에 0.01%라도 성장하자

Develop/Swift

Swift 컬렉션 타입 ( Array, Dictionary, Set)

뚠님 2019. 5. 7. 17:56
반응형

Swift

오랜만에 강의를 들어서 그런지... 진도도 빠르고.. 알아듣기 쉬운데 기분탓인가...

아직은 기초문법이라 그럴수도..

 

 

컬렉션

 

하나 이상의 데이터를 보관할 수 있는 특수한 자료구조.

 

 

Swift의 컬렉션 타입 종류

 

  •  Array
    • 소속된 멤버가 순서를 가진 리스트 형태
  • Dictionary
    • '키'와 '값'으로 이루어진 타입
    • map과 비슷함
  • Set
    • 중복되지 않은 멤버가 순서 없이 존재하는 컬렉션

 

Array

 

배열이며 다른 언어와 개념의 차이는 크게 없다.

var integers : Array<Int> = Array<Int>();
integers.append(1); // 1값을 가진 멤버 추가.
integers.append(100);

integers.contains(100); // 100이라는 값이 있는지에 대한 여부 확인.


integers.remove(at:0); // 0번째 멤버 삭제
integers.removeLast(); // 마지막 멤버 삭제
integers.removeAll(); // 모든 멤버 삭제



//두개는 같은 Array를 만듬. 문법의 차이.
var doubles : Array<Double> = [Double]();
var doubles2 : [Double] = [];

let tempArray : Array<Int> = [1,2,3]; // let으로 선언했기 때문에 배열의 값을 변경하거나 추가하는 것은 안됨.

 

배열을 선언하는것 외에는 크게 어려움이 없을 것 같다. ( 문법이 좀 헷갈리는.. )

contains는 유용하게 사용 될듯!

 

 

Dictionary

 

사전이라는 의미이며 Key와 Value로 이루어진 컬렉션으로 map과 비슷하다

( 비슷하다라는 표현을 쓴건 현재 사용되는 기능과 방법은 똑같으나 그 기반이 되는 로직이 다를 수 있기 때문에. )

 

var anyDictionary : Dictionary<String, Any> = [String:Any](); // 선언. String으로 된 key와 Any형의 값을 갖는다.

anyDictionary["tempKey"] = "tempValue";
anyDictionary["temp2Key"] = 100;

// tempKey키의 값을 dictionary로 변경
anyDictionary["tempKey"] = "dictionary";

nayDictionary.removeValue(forKey : "temp2Key"]; // temp2Key 키를 가진 값을 삭제
anyDictionary["tempKey"] = nil // tempKey 키의 값을 nil로 변경


let emptyDictionanry : [String:String] = [:] // 빈 값으로 초기화
let testDictionary: [String:String] = ["name":"뚠님", "job":"Developer"]; // 변경할 수 없는 dictionary 생성 및 초기 값

 

Dictionary는 개념은 크게 어렵진 않은데 쓰고나니 문법이 좀 익숙하지 않다.

아직도 콜론(:)과 let은 익숙하지 않...

 

let testDictionary: [String:String] = ["name":"뚠님", "job":"Developer"]; 
let tempV : String = testDictionary["name"]; // 에러 발생!!

 

추가로 참고할 것은 위의 코드처럼 tempV에 testDictionary의 값을 넣으려면 에러가 발생하는데

자료형이 같지만 에러가 발생하는 이유는 testDictinary["name"]값이 nil일 수도 있기 때문이다. 

 

 

Set

 

중복되지 않는다는 특수성을 가진 컬렉션. ( 아주 좋아. ... 문법 빼고.. )

var integerSert : Set<Int> = Set<Int>();

integerSet.insert(1);
integerSet.insert(100); // true
integerSet.insert(100); // false, 이미 100이 있기 때문에.

integerSet.contains(1); // 1이 ㅣㅇㅆ는지 여부 확인

integerSet.remove(100);  // 100 삭제.

integerSet.count // integerSet 개수


let setA : Set<Int> = [1,2,3,4,5];
let setB : Set<Int> = [3,4,5,6,7];

let union : Set<Int> = setA.union(setB); // 중복된 값을 제거한 합집합
let sortedUnion:[Int] = union.sorted(); // union값 정렬

let intersection : Set<Int> = setA.intersection(setB); // 교집합
let subtraction : Set<Int> = setA.subtraction(setB); // 차집합

 

같은 값을 입력할 경우 처리 되지 않는다.

Array와 비슷한 메소드를 가지고 있어서 제어 하기 쉽다.

 

반응형

'Develop > Swift' 카테고리의 다른 글

Swift 함수  (0) 2019.05.07
Swift Any, AnyObject, nil  (0) 2019.05.07
Swift 상수와 변수의 선언, 데이터 타입  (0) 2019.05.07
Swift 콘솔로그, 문자열 보간법  (0) 2019.05.07