■ HashSet 클래스 사용하기

----------------------------------------------------------------------------------------------------

Person.cs

 

 

/// <summary>

/// 사람

/// </summary>

public class Person

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region ID - ID

 

    /// <summary>

    /// ID

    /// </summary>

    public string ID { get; set; }

 

    #endregion

 

    #region 성명 - Name

 

    /// <summary>

    /// 성명

    /// </summary>

    public string Name { get; set; }

 

    #endregion

}

 

 

PersonEqualityComparer.cs

 

 

using System.Collections.Generic;

 

/// <summary>

/// 사람 동등 비교자

/// </summary>

public class PersonEqualityComparer : IEqualityComparer<Person>

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - PersonEqualityComparer()

 

    /// <summary>

    /// 생성자

    /// </summary>

    public PersonEqualityComparer()

    {

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 동등 여부 조사하기 - Equals(pPersonX, pPersonY)

 

    /// <summary>

    /// 동등 여부 조사하기

    /// </summary>

    /// <param name="pPersonX">Person 객체 X</param>

    /// <param name="pPersonY">Person 객체 Y</param>

    /// <returns>동등 여부 조사 결과</returns>

    public bool Equals(Person pPersonX, Person pPersonY)

    {

        return pPersonX.ID == pPersonY.ID;

    }

 

    #endregion

 

    #region 해시 코드 구하기 - GetHashCode(pPerson)

 

    /// <summary>

    /// 해시 코드 구하기

    /// </summary>

    /// <param name="pPerson">Person 객체</param>

    /// <returns>해시 코드</returns>

    public int GetHashCode(Person pPerson)

    {

        return pPerson.ToString().ToLower().GetHashCode();

    }

 

    #endregion

}

 

 

Program.cs

 

 

using System.Collections.Generic;

 

HashSet<Person> pPersonHashSet = new HashSet<Person>(new PersonEqualityComparer());

 

pPersonHashSet.Add(new Person { ID = "1", Name = "홍길동" });

pPersonHashSet.Add(new Person { ID = "1", Name = "홍길숙" });

pPersonHashSet.Add(new Person { ID = "2", Name = "김철수" });

pPersonHashSet.Add(new Person { ID = "3", Name = "김영희" });

 

Console.WriteLine(pPersonHashSet.Count);

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요