컬렉션10 : SortedList 클래스 :: C# 인트로[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

C# 인트로
[1]
등록일:2008-03-27 20:00:53 (0%)
작성자:갤러리정
제목:컬렉션10 : SortedList 클래스

7.10 SortedList 클래스

 

SortedList Hashtable ArrayList의 혼합형 정도로 보면 쉽게 이해하실 수 있습니다. 내부의 데이터는 키(Key)와 값(Value)으로 이루어져 있으며 키를 기준으로 정렬되고 키(Key)와 인덱스(Index)로 액세스할 수 있습니다. SortedList의 가장 큰 특징은 내부적으로 정렬된 컬렉션을 유지하고 있다는 것입니다. SortedList는 키와 값으로 이루어져 있기 때문에 IDictionary 인터페이스를 기본으로 사용합니다. 다음은 SortedList의 프로토타입입니다.

 

SortedList 클래스의 프로토타입

public class SortedList : IDictionary, ICollection, IEnumerable, ICloneable

 

SortedList 클래스의 특징

SortedList는 키의 목록 또는 값의 목록만 반환하는 메서드를 제공

SortedList는 내부적으로 두 개의 배열 즉, 키에 대한 배열과 관련 값에 대한 배열을 유지하여 요소를 목록에 저장

SortedList는 각 요소에 대해 키, 값 또는 인덱스의 세가지 방법으로 액세스함

요소(Element)가 삽입되면, 지정된 키가 이미 존재하는지 검사 à 중복키 허용하지 않음

 

다음은 SortedList에서 사용하는 주요 메서드들입니다.

SortedList 클래스의 메서드

Add()

·   지정한 키와 값을 가지는 요소를 SortedList에 추가

Clear()

·   SortedList에서 요소를 모두 제거

Contains()

·   SortedList에 특정 키가 들어 있는지 여부를 확인

ContainsKey()

·   SortedList에 특정 키가 들어 있는지 여부를 확인

ContainsValue()

·   SortedList에 특정 값이 들어 있는지 여부를 확인

GetByIndex()

·   SortedList의 지정한 인덱스에서 값을 가져온다.

GetEnumerator()

·   SortedList 전체를 반복할 수 있는 IDictionaryEnumerator를 반환

GetKey()

·   SortedList의 지정한 인덱스에서 키를 가져온다.

GetKeyList()

·   SortedList의 키를 가져온다.

Remove()

·   SortedList에서 지정한 키를 가지는 요소를 제거

RemoveAt()

·   SortedList의 지정한 인덱스에서 요소를 제거

  

 

다음 예제는 SortedList를 테스트하기 위한 예제입니다.

 

&

SamplesSortedList.cs

Ü SortedList를 테스트하는 예제

using System;
using System.Collections;

public class 
SamplesSortedList  {
  
public static void 
Main()  {
    SortedList mySL = 
new 
SortedList();
    mySL.Add(
76"four" 
);
    mySL.Add(
100"three" 
);
    mySL.Add(
2"two" 
);
    mySL.Add(
8"zero" 
);
    mySL.Add(
5"one" 
);
    Print(
"1. SortedList
 목록", mySL);
    bool IsContains = mySL.Contains(
2
);
    Console.WriteLine(
"2. Key '2' 
 존재하는가? {0}", IsContains);
    IsContains = mySL.ContainsValue(
"three"
);
    Console.WriteLine(
"3. Value 'three' 
 존재하는가? {0}", IsContains);
    object obj = mySL.GetKey(
3
);
    Console.WriteLine(
"4. Index 3 
위치의 Key? {0}", obj);
    obj = mySL.GetByIndex(
3
);
    Console.WriteLine(
"5. Index 3 
위치의 Value? {0}", obj);
    mySL.RemoveAt( 
);
    Print(
"6. 
데이터 제거후의 목록", mySL);
  } 
//main

  
public static void 
Print( string info, SortedList myList )  {
      Console.WriteLine(info);
      Console.WriteLine( 
"\t-INDEX-\t-KEY-\t-VALUE-" 
);
      
for int i = 0
; i < myList.Count; i++ )  {
          Console.WriteLine(
"\t[{0}]:\t{1}\t{2}"
, i, myList.GetKey(i), myList.GetByIndex(i));
      }
  }
//class

C:\C#Example\07>csc SamplesSortedList.cs

C:\C#Example\07>SamplesSortedList

1. SortedList 목록

        -INDEX- -KEY-   -VALUE-

        [0]:    2       two

        [1]:    5       one

        [2]:    8       zero

        [3]:    76      four

        [4]:    100     three

2. Key '2' 존재하는가? True

3. Value 'three' 존재하는가? True

4. Index 3 위치의 Key? 76

5. Index 3 위치의 Value? four

6. 데이터 제거후의 목록

        -INDEX- -KEY-   -VALUE-

        [0]:    2       two

        [1]:    5       one

        [2]:    8       zero

        [3]:    76      four

 

  

SortedList 객체 생성한 후 데이터를 삽입하고 있습니다. 데이터를 삽입할 때는 Add() 메서드를 사용하며 키와 값으로 데이터를 삽입합니다.

 

SortedList mySL = new SortedList();

mySL.Add(76, "four" );

mySL.Add(100, "three" );

mySL.Add(2, "two" );

mySL.Add(8, "zero" );

mySL.Add(5, "one" );

Print("1. SortedList 목록", mySL);

 

데이터 삽입이 끝난 후 바로 내부에서 만든 Print() 메서드를 호출하고 있습니다. 이 때 Print() 내에서는 리스트의 개수만큼 GetKey()GetByIndex()를 이용하여 데이터를 차례대로 추출하고 있습니다. 여기서 주의 깊게 보아야하는 것은 데이터가 삽입된 순서와 데이터가 추출되는 순서입니다. 삽입된 데이터들이 자동으로 정렬되어 추출된다는 것을 확인할 수 있습니다.

 

for ( int i = 0; i < myList.Count; i++ )  {

       Console.WriteLine("\t[{0}]:\t{1}\t{2}", i, myList.GetKey(i), myList.GetByIndex(i));

 

특정한 키를 담고 있는가를 확인하기 위해서 Contains() 메서드를 사용하며 특정한 값을 담고 있는지 테스트하기 위해서는 ContainsValue() 메서드를 사용합니다.

 

bool IsContains = mySL.Contains(2);

IsContains = mySL.ContainsValue("three");

 

인덱스(Index)로 키나 값을 얻기 위해서는 GetKey(), GetByIndex() 메서드를 사용합니다.

 

object obj = mySL.GetKey(3);

       Console.WriteLine("4. Index 3 위치의 Key? {0}", obj);

obj = mySL.GetByIndex(3);

       Console.WriteLine("5. Index 3 위치의 Value? {0}", obj);

 

특정 인덱스 위치의 데이터를 삭제하고자 할 때는 RemoveAt() 메서드를 사용합니다.

 

mySL.RemoveAt( 4 );

Print("6. 데이터 제거후의 목록", mySL);
[본문링크] 컬렉션10 : SortedList 클래스
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=3049
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.