HOWTO: Visual Basic .NET에서 HashTable 컬렉션을 사용한 작업

기술 자료 번역 기술 자료 번역
기술 자료: 307933 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR307933
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 HashTable 컬렉션에 대한 정보를 제공합니다. 해싱을 사용하면 비용이 많이 드는 데이터 검색 방법을 사용하지 않아도 되므로 데이터를 효과적으로 검색할 수 있습니다. 해싱은 키 자체에 있는 값을 사용하여 데이터를 찾습니다.

기본 클래스 라이브러리는 System.Collections 네임스페이스에 정의된 HashTable 클래스를 제공하므로 전용 해시 테이블을 코딩할 필요가 없습니다.

예제 빌드 단계

HashTable 컬렉션은 (키, 값) 쌍을 저장하고 를 사용하여 해시하고 저장소 위치를 얻습니다. 는 변하지 않으며 HashTable에 중복된 항목이 없습니다. 이 예제는 간단한 Person 클래스의 여러 인스턴스를 사용하여 HashTable에 저장합니다. 성이 로 사용됩니다.
  1. Microsoft Visual Studio .NET을 열고 Visual Basic .NET에 Windows 응용 프로그램 프로젝트를 만듭니다. 기본적으로 Form1이 프로젝트에 추가됩니다.
  2. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 누르고 추가를 가리킨 다음 클래스 추가를 눌러 클래스 모듈을 추가합니다. 기본적으로 Class1이 프로젝트에 추가됩니다.
  3. 새 항목 추가 대화 상자에서 열기를 누릅니다.
  4. Class1 모듈의 코드를 다음 코드로 바꿉니다.
    Public Class Person
        Public Fname, Lname As String
    
        Sub New(ByVal FirstName As String, ByVal LastName As String)
            Fname = FirstName
            Lname = LastName
        End Sub
    
        Public Overrides Function ToString() As String
            Return Fname + " " + Lname
        End Function
    End Class
    Person 클래스는 FirstNameLastName 매개 변수를 사용하는 생성자를 하나 포함하고 있으며 이들 매개 변수를 로컬 변수에 할당합니다. ToString 함수는 Object 클래스의 ToString을 무시하고 FnameLname이 함께 연결된 값을 반환합니다.
  5. Form1.vb에서 다음 Imports 문을 코드 모듈 맨 위에 추가합니다.
    Imports System.Collections
  6. 폼 수준 Hashtable 개체를 만들고 형식 Person의 세 가지 변수를 선언합니다. Form1 클래스에 아래 코드를 추가합니다.
    Dim MyTable As New Hashtable()
    
    'For simplicity, create three Person objects to add to the HashTable collection.
    
    Dim Person1, Person2, Person3 As Person  
  7. 다음 단계에서 Hashtable 개체의 Add 메서드를 사용하여 세 개의 Person 개체를 try-catch 블록의 Hashtable에 추가합니다. try-catch 블록은 예외를 catch하고 중복 키가 있을 경우 메시지를 표시합니다.
    1. Form1에 Button 컨트롤을 끌어 놓고 Text 속성을 Add Elements로 변경합니다.
    2. 단추를 두 번 눌러 코드 창을 열고 아래 코드를 Button1_Click 이벤트에 붙여넣습니다.
      Person1 = New Person("Karen", "Berge")
      Person2 = New Person("David", "Campbell")
      Person3 = New Person("Jim", "Kim")
      
      'The Add method takes Key as the first parameter and Value as the second parameter.
      
      Try
           MyTable.Add(Person1.Lname, Person1)
           MyTable.Add(Person2.Lname, Person2)
           MyTable.Add(Person3.Lname, Person3)
      Catch ae As ArgumentException
           MessageBox.Show("Duplicate Key")
      End Try
  8. Hashtable 개체는 인덱서를 제공합니다. 다음 단계에서는 해시된 위치에 저장된 값에 액세스하기 위해 로 색인화합니다.
    1. Form1에 Button 컨트롤을 추가하고 Text 속성을 Get Items로 변경합니다.
    2. 단추를 두 번 누르고 아래 코드를 Button2_Click 이벤트에 붙여넣습니다.
      'Use the indexer of the Hashtable class to retrieve your objects. The indexer takes 
      'Key as a parameter and accesses it with the Hashed location.
              
      Try
           MessageBox.Show(MyTable(Person1.Lname).ToString)
           MessageBox.Show(MyTable(Person2.Lname).ToString)
           MessageBox.Show(MyTable(Person3.Lname).ToString)
      Catch ex As NullReferenceException
           MessageBox.Show("Key not in Hashtable")
      End Try
  9. 다음 단계에서 Remove 메서드를 사용하여 HashTable 컬렉션에서 단일 항목을 제거합니다.
    1. Form1에 Button 컨트롤을 추가하고 Text 속성을 Remove Item으로 변경합니다.
    2. 단추를 두 번 누르고 아래 코드를 Button3_Click 이벤트에 붙여넣습니다.
      'Use the Count property.
      If (MyTable.Count = 0) Then
           MessageBox.Show("There are no items in HashTable")
      Else
           MessageBox.Show("The count before removing an Item is" & " " & MyTable.Count)
           MessageBox.Show("Removing value stored at key value (Berge)")
           'Remove the object that is stored at the Key value Person1.Lname.
           MyTable.Remove(Person1.Lname)
      End If
  10. 다음 단계에서는 HashTable 컬렉션에 저장된 항목을 열거합니다.
    1. Form1에 Button 컨트롤을 추가하고 Text 속성을 Enumerate로 변경합니다.
    2. 단추를 두 번 누르고 아래 코드를 Button4_Click 이벤트에 붙여넣습니다.
      Dim Enumerator As IDictionaryEnumerator
      Enumerator = MyTable.GetEnumerator()
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Enumerating through the HashTable collection")
           While Enumerator.MoveNext()
                MessageBox.Show(Enumerator.Value.ToString())
           End While
      End If
      
      Dim MyKeys As ICollection
      Dim Key As Object
      
      If (MyTable.Count = 0) Then
           MessageBox.Show("The HashTable is empty")
      Else
           MessageBox.Show("Accessing keys property to return keys collection")
           MyKeys = MyTable.Keys()
      
           For Each Key In MyKeys
                MessageBox.Show(Key.ToString)
           Next
      End If 
      이 코드는 형식 IDictionaryEnumerator의 변수를 하나 선언하고 HashTable 컬렉션의 GetEnumerator 메서드를 호출합니다. Enumerator가 반환되면 코드는 컬렉션에 있는 항목을 열거하고 HashTableKeys 메서드를 사용하여 키를 열거합니다.
  11. 다음 단계에서는 Clear 메서드를 사용하여 HashTable을 지웁니다.
    1. Form1에 Button 컨트롤을 추가하고 Text 속성을 Clear로 변경합니다.
    2. 단추를 두 번 누르고 아래 코드를 Button5_Click 이벤트에 붙여넣습니다.
      MyTable.Clear()
      MessageBox.Show("HashTable is now empty")
  12. 다음 단계를 수행하여 응용 프로그램을 빌드하고 실행합니다.
    1. 항목 추가를 누릅니다. 세 개의 Person 개체가 HashTable 컬렉션에 추가됩니다.
    2. Get Items를 누릅니다. 인덱서는 HashTable 컬렉션에서 항목을 얻습니다. 새로 추가된 세 항목이 표시됩니다.
    3. 항목 제거를 누릅니다. "Berge" 키 위치의 항목이 삭제됩니다.
    4. 열거를 누릅니다. IDictionaryEnumerator가 HashTable 컬렉션에 항목을 열거합니다.
    5. 지우기를 누릅니다. HashTable 컬렉션에서 모든 항목이 지워집니다.
참고: 용례에 사용된 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 및 이벤트 등은 실제 데이터가 아닙니다. 어떠한 실제 회사, 기관, 제품, 도메인 이름, 전자 메일 주소, 로고, 사람, 장소 또는 이벤트와도 연관시킬 의도가 없으며 그렇게 유추해서도 안됩니다.

속성

기술 자료: 307933 - 마지막 검토: 2002년 3월 14일 목요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Basic .NET 2002 Standard Edition
키워드:?
kbhowto kbhowtomaster KB307933

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com