지금까지 여러변수를 다루기 위하여 배열을 이용하였다.
2018/10/03 - [교육 노트/C# 강의] - [C# 때려잡기] C# 강의 8. 배열 foreach
그러나 배열만으로 사용하기에는
귀찮은 점이 조금많다.
일단 사이즈가 처음 지정되면 변경이 불가능하고
FIX 된 데이터가 아니면 배열은 사용하기 귀찮다.
물론 C#의배열은 상당히 강력한 기능을 제공해주기는 한다만..
아무튼
이러한 데이터들의 모음들을 관리하기위하여
사용하는 것이 자료구조이고 C#에서는 컬렉션이라는 이름으로 각종 클래스를 만들어 두었다.
using System.Collections;
를 추가해주어야 사용할수있다.
1. ArrayList
배열처럼 사용가능하지만 크기가 동적이다.
2. Stack Queue
자료구조 자체에 대한 설명은 https://see-ro-e.tistory.com/32 참고
3.해쉬 테이블
해쉬테이블은 키-벨류 쌍을 하나의 요소로 가진다.
예를 들어 학생의경우
이름,학번,성적 ... 등등 에 맞는 값을 가지고 있다
이름:철수
학번:2018333333
성적:3.0
이런 key-value의 연관관계를 표현하기위한 자료형이 해쉬테이블 이다
왜 해쉬테이블이냐하면 해쉬함수가 어쩌고 설명이 길어지므로 생략
암튼
뭐 요런식
4. Object 클래스
위의 예시를 잘보면 하나의 컬랙션에 다른 자료형의 데이터들이 들어갈수있는것을 확인할수있다.
Object자료형으로형변환 될수있다.
심지어 우리가만든 클래스조차도 자동적으로 object가 최상위 부모클래스가 된다.
따라서 ArrayList a의
과 같은 내용은
실제로
뭐 이런식으로 이루어져있는것이다.
따라서 사용할때마다 명시적으로든 묵시적으로든 형변환이 이루어지고
당연히 소요시간이 걸리게된다. 이는 런타임에서 발생하는 시간이고
역시 당연히 데이터가 많아지면 타임은 훨씬 길어지게된다.
그래서 이렇게 여러가지 각기 다른 자료형 (이질적인) 데이터를 넣는 컬렉션의 성능은 떨어질수밖에 없다.
따라서 이질적은 데이터를 넣을 필요가 없다면 성능을위해 (혹은 관리의 편의성을 위해)
앞서 배운 "제네릭" 을 이용하여 만들어진 컬렉션
즉 제네릭 컬렉션을 이용하여 성능을 향상시킬수있다. (제네릭이 이럴때 쓰인다!)
'교육 노트 > C# 강의' 카테고리의 다른 글
[C# 때려잡기] C# 강의 37. 예외처리 (0) | 2018.12.15 |
---|---|
[C# 때려잡기] C# 강의 36. 제네릭 컬렉션 (0) | 2018.12.08 |
[C# 때려잡기] C# 강의 34. 제네릭 (1) | 2018.12.08 |
[C# 때려잡기] C# 강의 33. 클래스와 구조체 (0) | 2018.12.08 |
[C# 때려잡기] C# 강의 32. 추상클래스와 인터페이스 (0) | 2018.12.08 |