繼上篇,先把這些容器的基本語法學起來
跟上一篇同樣的圖 :
Dictionary<int, string> dictionary = new Dictionary<int, string>();
dictionary.Add(2, "AA");
dictionary.Add(23, "BB");
dictionary.Add(5, "CC");
dictionary.Add(1, "DD");
foreach (var item in dictionary)
{
Console.WriteLine($"key = {item.Key} , value = {item.Value}");
}
SortedDictionary<int, string> sortedDictionary
= new SortedDictionary<int, string>();
sortedDictionary.Add(2, "AA");
sortedDictionary.Add(23, "BB");
sortedDictionary.Add(5, "CC");
sortedDictionary.Add(1, "DD");
foreach (var item in sortedDictionary)
{
Console.WriteLine($"key = {item.Key} , value = {item.Value}");
}
internal class Person
{
public int Age { get; set; }
public string Name { get; set; }
}
實作ICompare並定義排序條件
internal class PersonComparer : IComparer<Person>
{
public int Compare(Person p1, Person p2)
{
int result;
result = p1.Age.CompareTo(p2.Age);
if (result == 0)
result = p1.Name.CompareTo(p2.Name);
return result;
}
}
宣告時放入PersonComparer
SortedDictionary<Person, string> sortedDictionary2
= new SortedDictionary<Person, string>(new PersonComparer());
sortedDictionary2.Add(new Person { Name = "BB", Age = 6 }, "BB2");
sortedDictionary2.Add(new Person { Name = "AA", Age = 7 }, "AA2");
sortedDictionary2.Add(new Person { Name = "A", Age = 3 }, "A2");
sortedDictionary2.Add(new Person { Name = "CCC", Age = 30 }, "CCC2");
foreach (var item in sortedDictionary2)
{
Console.WriteLine($"key = {item.Key.Name}-{item.Key.Age}
, value = {item.Value}");
}
List<int> list = new List<int>();
list.Add(2);
list.Add(23);
list.Add(5);
list.Add(1);
foreach (var item in list)
{
Console.WriteLine($"value = {item}");
}
SortedList<int, string> sortList = new SortedList<int, string>();
sortList.Add(2, "AA");
sortList.Add(23, "BB");
sortList.Add(5, "CC");
sortList.Add(1, "DD");
foreach (var item in sortList)
{
Console.WriteLine($"key = {item.Key} , value = {item.Value}");
}
HashSet<int> hashSet = new HashSet<int>
{
2,23,5,1
};
foreach (var item in hashSet)
{
Console.WriteLine($"value = {item}");
}
SortedSet<int> sortedSet = new SortedSet<int>();
sortedSet.Add(2);
sortedSet.Add(23);
sortedSet.Add(5);
sortedSet.Add(1);
foreach (var item in sortedSet)
{
Console.WriteLine($"value = {item}");
}
Stack<int> stack = new Stack<int>();
stack.Push(9);
stack.Push(78);
stack.Push(66);
stack.Push(55);
Console.WriteLine($"Peek = {stack.Peek()}");
while (stack.Count() != 0)
{
Console.WriteLine($"value = {stack.Pop()}");
}
Queue<int> queue = new Queue<int>();
queue.Enqueue(9);
queue.Enqueue(78);
queue.Enqueue(66);
queue.Enqueue(55);
while (queue.Count() != 0)
{
Console.WriteLine($"value = {queue.Dequeue()}");
}
LinkedList<int> linkList = new LinkedList<int>();
linkList.AddFirst(1);
linkList.AddFirst(2);
linkList.AddFirst(3);
linkList.AddLast(7);
linkList.AddLast(8);
linkList.AddLast(9);
linkList.RemoveFirst();
linkList.RemoveLast();
foreach (var item in linkList)
{
Console.WriteLine($"value = {item}");
}
熟悉基本語法後再找適當的演算法放不同容器試一試
新手發文,若有錯誤的地方請不吝色的指正,謝謝。