CodeLabs

[C#] List : 정렬 본문

C#/자료구조

[C#] List : 정렬

무오_ 2023. 7. 14. 19:09

Sort

public class Part : IEquatable<Part>, IComparable<Part>
{
    public int Id;
    public string Name;

    public Part(int id, string name)
    {
        Id = id;
        Name = name;
    }
    public int SortByNameAscending(string name1, string name2)
    {
        return name1.CompareTo(name2);
    }
    public int CompareTo(Part comparePart)
    {
        if (comparePart == null)
            return 1;
        else return Id.CompareTo(comparePart.Id);
    }

    public bool Equals(Part? other)
    {
        if (other == null) return false;
        return (Id.Equals(other.Id));
    }
    public override bool Equals(object? obj)
    {
        if (obj == null) return false;
        Part? objAsPart = obj as Part;
        if (objAsPart == null) return false;
        else return Equals(objAsPart);
    }

    public override int GetHashCode()
    {
        return Id;
    }

    public override string ToString()
    {
        return $"ID : {Id} Name : {Name}";
    }
}
    
    static void Main(string[] args)
    {
        List<Part> parts = new List<Part>();

        parts.Add(new Part(id: 1454, name: "output stream"));
        parts.Add(new Part(id: 1534, name: "main function"));
        parts.Add(new Part(id: 1634, name: "shift operator"));
        parts.Add(new Part(id: 1234, name: "set parameter"));
        parts.Add(new Part(id: 1334, name: "Explict casting"));
        parts.Add(new Part(id: 1434, name: "input stream"));

        foreach (Part part in parts)
        {
            Console.WriteLine(part.ToString());
        }

        Console.WriteLine("\n=========== parts is Sorting By parts.Id (1 -> 9)===========\n");

        parts.Sort();

        foreach (Part part in parts)
        {
            Console.WriteLine(part.ToString());
        }

        Console.WriteLine("\n=========== parts is Sorting By parts.Name (upper -> lower, a -> z)===========\n");

        parts.Sort(delegate(Part x, Part y)
        {
            if (x.Name == null && y.Name == null) return 0;
            else if (x.Name == null) return -1;
            else if (y.Name == null) return 1;
            else return x.Name.CompareTo(y.Name);
        });

        foreach (Part part in parts)
        {
            Console.WriteLine(part.ToString());
        }
    }

'C# > 자료구조' 카테고리의 다른 글

[C#] List 사용법  (0) 2023.07.15
[C#] List : 찾기  (0) 2023.07.13
[C#] List : 제거  (0) 2023.07.12
[C#] List : 추가  (0) 2023.07.10