C# 선형 자료구조 - 리스트(List, ArrayList, LinkedList)

728x90
  • ArrayList : 내부적으로 배열을 사용
  • LinkedList : 링크 포인터를 사용
  • List<T> : 제네릭 타입

 

  • 배열의 특징

생성 시 사용할 공간을 미리 할당한다.

- 인덱스를 사용 데이터 접근에 빠르다.

- 데이터의 크기를 변경하지 못한다.

  • 리스트의 특징

- 데이터의 추가 삭제가 자유롭다.

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

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

 

  • ArrayList의 특징

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

- 데이터 타입에 관계 없이 삽입이 가능(object 타입)

- 배열보다 속도가 느리다

- ArrayList.Insert(int index, object value);

list.Insert(3,4);

- ArrayList.RemoveAt(int index);

list.RemoveAt(4);
list.Remove(4); //값을 찾아서 삭제

-ArrayList.Count;

for(int i = 0; i < list.Count; i++)
{
	Console.WriteLine((i + 1) + "번째 : " + list[i]);
}
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02_ArrayList
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList list = new ArrayList();

            list.Add("문자열");
            list.Add(100);
            list.Add(true);

            list.Insert(2, 200);

            for(int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
        }
    }
}

 

- 형 변환 시 박싱/언박싱 발생

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

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

int n = 100;
object o = n;
Int b = (int)o;

 

  • List<T>

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

- List<int>, List<double>, List<Music>, List<string[]>

List<string> MusicList = new List<string>();
MusicList.Add("좋은날");
MusicList.Add("귀로");
MusicList.Add("아무노래");
MusicList.Add("ON");
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _02_ArrayList
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> list = new List<string>();

            list.Add("슬램덩크");
            list.Add("드래곤볼");
            list.Add("나루토");

            list.Insert(0, "데스노트");
            list.RemoveAt(2);
            list.Remove("나루토");

            for(int i = 0; i < list.Count; i++)
            {
                Console.WriteLine(list[i]);
            }
        }
    }
}

 

728x90