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());
}
}