신입 개발자 공부 과정

모르는 부분들 다차원 배열 과 가변배열, 제네릭 리스트 List<T>, 컬렉션Collection 본문

C#/수업 내용

모르는 부분들 다차원 배열 과 가변배열, 제네릭 리스트 List<T>, 컬렉션Collection

Lewisjkim 2021. 12. 29. 16:26

 

-다차원 배열과 가변배열 Jagged Array and Adjustable Array

array of different element size
ex)
x x x
x x x
x   x
    x

creat instants of Adjustable Array=
new int[3][];​

     

Announce to Adjustable Array variables=
int[][]arr = new int[3][];​

arr

null null null
to use Adj Array, initilize elements first.
ex)
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[4];

or

arr[0] = new int[ ] {1,3,5}; //first column init
arr[0] = new int[ ] {2,4}; //second column init
arr[0] = new int[ ] {10,20,30}; //third column init

1=arr[0][0] 2 10
3=arr[0][1] 4 20
5   30
    40

using for sentence to go over adj array=
for (int i = 0; i < 3; i++)
	{
    for (int j = 0; j < arr[i].Length; j++)
    	{
        	Console.Write("{0}", arr[i][j]);
        }
        Console.WriteLine();
    }​
output:
1 3 5
2 4
10 20 30 40

 

-제네릭 리스트 List<T> 

namespace includes - System.Collections.Generic
List<string(매개변수)> names;
names = new List<string>(); // create instants​


Method=
public void Add(T item); //개체를 List<T>의 끝 부분에 추가합니다.
public void Clear(); // List<T>에서 요소를 모두 제거합니다.
public bool Contains (T item); // List<T>에 요소가 있는지 여부를 확인합니다.
public bool Remove (T item);// List<T>에서 맨 처음 발견되는 특정 개체를 제거합니다. (item이 제거되면 true, if not false)​

 

List<string> names = new List<string>();
names.Add("홍길동");
names.Clear();
bool hasName = names.Contains("홍길동");
Console.WriteLine(hasName); //true
bool isRemoved=names.Remove("홍길동");
Console.WriteLine(isRemoved); //true
속성
public int Count{get;} //List<T>에 포함된 요소 수를 가져옵니다.
List<string> names = new List<string>();
names.Add("홍길동");
names.Add("임꺽정");
Console.WriteLine(names.Count);//2​

public T this[int index]{get; set;} //지정한 인덱스에 있는 요소를 가져오거나 설정합니다.

List<string> names = new List<string>();
names.Add("홍길동");
names.Add("임꺽정");
Console.WriteLine(names[1]);//임꺽정​


목록 순회하기

foreach(string name in names)
{
	Console.WriteLine(name);
}
//foreach문을 사용해 List<T> 요소에 접근 할 수 있습니다.
//요소의 타입은 T입니다
//요소의 이름은 관리 되는 개체들을 뜻하는 이름이 좋습니다.

 

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



 

 

컬렉션 종류
System.Collections 클래스 
Object 형식의 개체로 요소를 저장합니다

 

-네임스페이스 클래스 중 일부
//ArrayList
//Hashtable
//Queue
//Stack

 

-컬렉션 (Array List)


System.Collections.Generic 클래스=

ArrayList
.Net에서는 ArrayList라는 클래스를 만들어 놨습니다.
필요에 따라 크기가 동적으로 증가하는 배열(가변배열)
컬렉션은 = 클래스 이므로
요소를 추가하려면 인스턴스화 해야 된다.
Add()= 추가
Remove= 특정 개체 제거
ex)
ArrayList list = new ArrayList();
list.Add("홍길동"); //개체를 ArrayList의 끝 부분에 추가해야된다.
Console.WriteLine(list[0]); //index를 사용해 요소에 접근 할 수 있다.
//---
for(int i=0; i<list.Count; i++)
{
    Console.WriteLine(list[i]); //for문으로 각 요소를 출력 가능하다
}
//---
foreach(string name in list) 
{
    Console.WriteLine(name); //foreach문으로 각 요소를 출력 할 수 있습니다.
}
list[0] = "임꺽정"; //index를 사용해 요소에 접근 해 요소의 값을 변경 할 수도 있습니다.
list.Remove("홍길동"); //ArrayList에서 맨 처음 발견되는 특정 개체를 제거합니다​

컬렉션(스택)

.NET에는 스택이 이미 구현되어 있다.
Push(Object)= 개체를 stack의 맨 위에 삽입
Pop()=Stack의 맨 위에서 개체를 제거하고 반환
Peek()=Stack의 맨 위에서 개체를 제거하지 않고 반환
속성
Count= stack에 포함된 요소 수를 가져온다

컬렉션 = 클래스 이므로 요소를 추가하려면 인스턴스화 해야된다
Stack stack = new Stack();
stack.Push("홍길동");//개체 "홍길동"을 stack의 맨 위에 삽입한다
object name = stack.Pop(); //stack의 맨 위에서 개체를 제거하고 반환한다
object name = stack.Peek(); //stack의 맨 위에서 개체를 제거하지 않고 반환한다
int count = stack.Count; //stack에 포함된 요소 수를 가져온다
foreach(object name in stack)
{
//foreach문을 사용해 stack의 요소에 접근 할 수 있습니다.
}​

컬렉션(Queue)

Stack과 달리 먼저 들어온 개체가 먼저 반환된다
입력= Enqueue()
출력= Dequeue()
Peek()=
Stack의 맨 위에서 개체를 제거하지 않고 반환
속성
Count= stack에 포함된 요소 수를 가져온다
Queue queue = new Queue(); //인스턴스 생성
queue.Enqueue(10);//데이터 입력
queue.Enqueue(20);
queue.Enqueue(30);
Console.WriteLine(queue.Dequeue());//데이터 입력된 순서대로 출력
Console.WriteLine(queue.Dequeue());
Console.WriteLine(queue.Dequeue());
​

 

컬렉션(Hashtable)

키와 값을 함께 저장가능(정수와 문자열 인덱스)
ex)이름과 전화번호

Add(obj key, obj value);= 추가
Remove(obj key, obj value);= 제거
bool Contains(obj key);= 특정 키가 들어있는지 확인하기
int 변수.Count {get;}= 해쉬테이블에 포함된 키/값 쌍의 수를 가져온다
Hashtable hash = new Hashtable();
hash[0] = "닷넷코리아";
hash["김주성"] = "코딩중";
Console.WriteLine(hash[0]);
Console.WriteLine(hash["김주성"])
Console.WriteLine(hash.Count);
Console.WriteLine(hash.Contains("김주성"));;​



//다음엔

델리게이트, 익명함수, 람다식

'C# > 수업 내용' 카테고리의 다른 글

1월3일 인벤3  (0) 2022.01.03
12/30 수업 스타크래프트 부대지정  (0) 2021.12.30
12/29수업 item + inventory  (0) 2021.12.29
벌쳐 (마인) vs 질럿 연습 문제 12/28  (0) 2021.12.29
마린 vs 저글링 C# 공격 과제  (0) 2021.12.28