List 에 대한 간략한 설명 및 사용 방법을 알아보겠습니다.
[1] 일반적으로 배열은 동적으로 크기 조절이 되지 않지만 List는 가능합니다.
[2] 리스트를 사용하면 배열의 크기에 대해서 크게 신경쓸 필요도 없습니다.
[3] 선형 리스트에 필요한 Key도 사용하지 않으면서 많은 기능을 제공합니다.
Key Point
List는 Generic이나 구조체로 간주되며 <> 사이에 자료형을 선언해야 합니다.
Add Value
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | using System.Collections.Generic; class Program { static void Main() { List<int> list = new List<int>(); list.Add(2); list.Add(3); list.Add(5); list.Add(7); } } | cs |
위의 예제는 하나의 List에 불특정 소수를 추가하는 것을 나타냅니다.
Add를 이용해 Value를 추가시킬 수 있습니다.
Loops
일반적인 배열처럼 List도 반복문을 접목해 사용할 수 있습니다.
경우에 따라 List를 거꾸로 읽어서 처리할 수도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using system; using System.Collections.Generic; class Program { static void Main() { List<int> list = new List<int>(); list.Add(2); list.Add(3); list.Add(7); foreach (int prime in list) { Console.WriteLine(prime); } for (int i = 0; i < list.Count; i++) { Console.WriteLine(list[i]); } } } | cs |
Output
2
3
7
Count Element
Key Point
현재 사용중인 리스트 내부의 요소 개수가 궁금할 때 Count() 속성을 사용합니다.
Clear List
리스트 내부의 요소를 모두 지울 때 Clear() 메소드를 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System; using System.Collections.Generic; class Program { Static void Main() { List<bool> list = new List<bool>(); list.Add(true); list.Add(false); list.Add(true); Console.WriteLine(list.Count); list.Clear(); Console.WriteLine(list.Count); } } | cs |
Output
3
0
Copy array to List
생성자를 이용해서 만든 배열의 요소를 List에 매개 변수로 전달해 복사할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System; using System.Collections.Generic; class Program { Static void Main() { int[] arr = new int[3]; arr[0] = 2; arr[1] = 3; arr[2] = 5; List<int> list = new List<int>(arr); Console.WriteLine(list.Count); } } | cs |
Find Element
아래 예제는 List에서 원하는 요소를 검색하는 방법입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | using System; using System.Collections.Generic; class Program { Static void Main() { List<int> primes = new List<int>(new int[] {2. 3. 5}); foreach (int number in primes) { if (number == 3) { Console.WriteLine("Contains 3"); } } } } | cs |
Join String List Example
String.Join을 이용해 단어 사이에 ','가 찍히는 문자열을 만드는 예제입니다.
여러 개의 문자열을 구성할 때 유용하게 사용할 수 있습니다.
List에서 문자열을 추출할 땐 ToArray를 이용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | using System; using System.Collections.Generic; class Program { Static void Main() { List<string> cities = new List<string>(); cities.Add("New York"); cities.Add("Mumbai"); cities.Add("Berlin"); cities.Add("Istanbul"); string line = string.Join(",", cities.ToArray()); Console.WriteLine(line); } } | cs |
Get List from Keys in Dictonary
Key들의 값을 얻어낼 List를 생성하는 예입니다.
.Keys를 이용해서 Enumerable을 반환 받기 때문에 가능합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | using System; using System.Collections.Generic; class Program { Static void Main() { Dictionary<int,bool> dict = new Dictionary<int, bool>(); dict.Add(3, true); dict.Add(5, false); List<int> keys = new List<int>(dict.Keys); foreach (int key in keys) { Console.WriteLine(key); } } } | cs |
Insert Element
이미 여러 요소를 보유한 List 중간에 새로운 값을 넣을 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | using System; using System.Collections.Generic; class Program { Static void Main() { List<string> dogs = new List<string>(); dogs.Add("spaniel"); dogs.Add("beagle"); dogs.Insert(1, "dalmatian"); foreach (string dog in dogs) { Console.WriteLine(dog); } } } | cs |
Output
spaniel
dalmatian
beagle
Get range of Element
GetRange() 메소드를 이용해서 범위 안의 요소를 추출할 수 있습니다.
LINQ의 Skip과 비슷한 면도 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | using System; using System.Collections.Generic; class Program { Static void Main() { List<string> rivers = new List<string>(new string[] { "nile", "amazon", "yangtze", "mississippi", "yellow" }); List<string> range = rivers.GetRange(1, 2); foreach (string river in range) { Console.WriteLine(river); } } } | cs |
Output
amazon
yangtze
'- Programming > - C#' 카테고리의 다른 글
★ 18. 람다식 (Lambda Expression) (0) | 2017.03.26 |
---|---|
★ 17. C# - Dictionary Collection (3) | 2017.03.26 |
★ 15. c# ref와 out의 차이 (0) | 2017.02.16 |
★ 14. c# 네트워크 개발 p13 (0) | 2017.02.16 |
★ 13. c# 네트워크 개발 p12 (0) | 2017.02.16 |