모르는 부분들 다차원 배열 과 가변배열, 제네릭 리스트 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)
속성 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;}= 해쉬테이블에 포함된 키/값 쌍의 수를 가져온다