선형자료구조 - 리스트&박싱과 언박싱) 복습을 위해 작성하는 글 2023-04-05

rizz·2023년 4월 5일
0

자료구조

목록 보기
2/12

📒 갈무리 - 리스트

📌 리스트란?

- 하나의 목록처럼 배열과 유사한 방식으로 데이터들을 저장하는 컨테이너

📌 리스트의 종류

ArrayList : 내부적으로 배열을 사용

LinkedList : 링크 포인터를 사용

List<T> : 제네릭 타입

 

📌 ArrayList의 특징

- 데이터의 크기가 정해져 있지 않고, 동적으로 삽입과 삭제가 가능하다.

- 데이터 타입에 관계 없이 삽입이 가능하다.

- 생성 시 크기를 지정하지 않는다.

- 리스트를 다른말로 Dynamic Array라고 부른다.

- 배열보다 속도가 느리다.

📌 ArrayList의 사용

// C#

using System.Collections; // ArrayList를 사용하기 위해 Collections를 using

            ArrayList list = new ArrayList(); // 선언

            // 값 초기화
            // 별도의 index 없이 값을 초기화
            list.Add(1); // 첫 번째를 1로 초기화
            list.Add(2); // 두 번재를 2로 초기화
            list.Add(3); // 세 번째를 3으로 초기화
            list.Add(4); // 네 번째를 4으로 초기화
            // 1 2 3 4

            list[3] = 5; // index가 없이 추가를 하여도 index로 접근이 가능함
            // 1 2 3 5

            // 값 삽입
            list.Insert(3, 5); // 3번 index에 5를 넣겠다.
            // 원래 있던 3번 index의 값은 4번 index 값이 됨
            // 1 2 3 5 5

            // 값 삭제
            list.RemoveAt(0); // 0번 인덱스를 삭제
            // 2 3 5 5
            
            list.Remove(3); // 3이라는 값을 찾아서 삭제
            // 2 5 5

 

📌 List<T>의 특징

<T> : 데이터 타입이 아직 결정되지 않음

- 개발 시에 데이터 타입을 정하는 것이 아니라 런타임 시 데이터 타입을 결정한다.

- 저정할 데이터 타입을 T에 인자값으로 넘긴다.

- ArrayList 보다 List<T> 사용을 권장한다.

📌 List<T>의 사용

            List<string> list = new List<string>(); // 선언

            // list 초기화
            list.Add("문자열1");
            list.Add("문자열2");
            list.Add("문자열3");
            // list.Add(1); // 타입 오류

            list.Insert(0, "문자열0"); // 0번째 index에 저장
            // 기존에 있던 값은 뒤로 밀려남

            list.RemoveAt(1); // 1번째 index 삭제
            // 기존에 있던 값들이 앞으로 당겨짐

            list.Remove("문자열3"); // "문자열3"이라는 값을 찾아서 삭제

            List<int> list2 = new List<int>(); // int형 List 선언
            
            list2.Add(5);
            list2.Add(2);
            list2.Add(8);
            // 5 2 8

            list2.Sort(); // 오름차순 정렬
            // 2 5 8

 

📌 박싱과 언박싱

박싱(Boxing) : 값 형식을 참조 형식으로 변환하는 것

언박싱(Boxing) : 참조 형식을 값 형식으로 변환하는 것

- 박싱은 단순히 참조에 할당하는 것보다 20배의 비용이 들고 언박싱은 4배가 든다.

- .Net에서도 데이터 타입이 같은 컬렉션일 경우 ArrayList의 사용을 지양하고 List<T>를 사용할 것을 권고한다.

profile
복습하기 위해 쓰는 글

0개의 댓글