c#/수업 내용
Hachtable 클래스와 기본 문제
이지훈26
2021. 9. 2. 16:19
using Hellowrold;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
class Program
{
static void Main(string[] args)
{
//변수 선언
Hashtable table;
//컬렉션 초기화
table = new Hashtable();
//추가
table.Add(100, "장검");
Hero hero = new Hero("홍길동");
table.Add("123-456", hero);
table.Add(hero, 1234565);
//처리되지 않은 예외: System.ArgumentException: 항목이 이미 추가되었습니다.
//사전에 있는 키: 'Hero' 추가되는 키: 'Hero'
//table.Add(hero, 1234565);
table.Add(1.23f, 2222f);
table.Add(true, "A");
//요소의 수
Console.WriteLine("count: {0}", table.Count);
//인덱스는 0, 1, 2, 3 가 아니라 키 값이다 !!!!!!!!!!!!!
//인덱스로 가져온다
object element = table[100];
Console.WriteLine("element: {0}", element);
//인덱스로 값을 넣을 수 있다
table[100] = "단검";
Console.WriteLine("-> " + table[100]);
bool haskey = table.ContainsKey(100);
Console.WriteLine("haskey: {0}", haskey);
table.Remove(100);
Console.WriteLine("count: {0}", table.Count);
//foreach문을 통해서 반복할 수 있다
//DIctionaryEntry에 key와 value값이 속으로 제공된다
foreach (DictionaryEntry de in table)
{
Console.WriteLine("key: {0}, val: {1}", de.Key, de.Value);
}
foreach (object key in table.Keys)
{
Console.WriteLine("key: {0}", key);
}
foreach (object val in table.Values)
{
Console.WriteLine("val: {0}", val);
}
}
}
Hashtable 클래스
-키의 해시 코드에 따라 구성된 키/값 쌍의 컬렉션을 나타냄
ex)
바코드 번호 - 물품 정보
주민번호 - 인적사항
(키) (값)
***검색이 매우 빠르다
네임 스페이스 : system.collections
키의 해시코드에 따라 구성된 키/값 쌍의 컬렉션이다
IEnumrable 구현했음 -> foreach 가능
사용전에 컬렉션을 초기화 한다
new Hachtable();
------------------------
속성
Count : 요소수를 반환한다
Keys : ICollection타입으로 Hashtable에 있는 키들을 가져온다 -> foreach가능
Values : ICollection타입으로 Hashtable에 있는 값들을 가져온다 -> foreach가능
-------------------------
메서드
Add(Object, Object)메서드 사용
매개변수가 2개다
첫번째 매개변수 : key (키)
두번째 매개변수 : value (값)
key 값이 null일 경우 ArgumentNullException 발생
value 값 null을 허용한다
*** 중복된 키를 사용할 수 없다 ***
값은 중복되어도 된다
인덱스 값을 키값으로 해서 값을 읽고 쓸 수 있다
table[키] = 값
console.writeLine(table[키])
키 타입(objrct)은 어떤 것도 될 수 있다
containskey(키값)
키가 있으면 true
없으면 false
foreach문을 사용할 때 요소의 타입은 DictionaryEntry 구조체다
이 구조체는 key, value 속성을 가지고 있다
foreach( DictionaryEntry de in openWith )
Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
데이터 삭제시 Remove(Object)메서드 사용
매개변수 : key