添加Lesson16

This commit is contained in:
2025-10-21 20:37:12 +08:00
parent b1d4959956
commit faee796928
7 changed files with 370 additions and 0 deletions
+146
View File
@@ -0,0 +1,146 @@
using System.Collections.Generic;
namespace Lesson16_List排序
{
class Program
{
static void Main(string[] args)
{
#region List自带的排序方法
List<int> list = new List<int>();
list.Add(3);
list.Add(2);
list.Add(4);
list.Add(6);
list.Add(5);
list.Add(1);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
Console.WriteLine("_________________________");
//list提供了sort方法,可以对list进行排序,默认是升序排序
list.Sort();
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
//Arraylist中也有sort方法
#endregion
#region
Console.WriteLine("_________________________");
List<Item> itemList = new List<Item>();
itemList.Add(new Item(45));
itemList.Add(new Item(10));
itemList.Add(new Item(99));
itemList.Add(new Item(24));
itemList.Add(new Item(100));
itemList.Add(new Item(12));
itemList.Sort();//无法排序,自定义类没有默认的排序规则,不知道按哪个字段排序
for (int i = 0; i < itemList.Count; i++)
{
Console.WriteLine(itemList[i].money);
}
#endregion
#region
List<ShopItem> shopItems = new List<ShopItem>();
shopItems.Add(new ShopItem(5));
shopItems.Add(new ShopItem(2));
shopItems.Add(new ShopItem(3));
shopItems.Add(new ShopItem(6));
shopItems.Add(new ShopItem(4));
shopItems.Add(new ShopItem(1));
//通过委托函数进行排序
//shopItems.Sort(SortShopItem);
//通过匿名函数表达式进行排序
//shopItems.Sort(delegate(ShopItem a,ShopItem b) {
// if (a.price > b.price)
// {
// return 1;
// }
// else if (a.price == b.price)
// {
// return 0;
// }
// else
// {
// return -1;
// }
//});
//通过lambda表达式结合三木运算符进行排序
shopItems.Sort((a, b) => {
return a.price > b.price ? 1 : -1;
});
Console.WriteLine("_________________________");
for (int i = 0; i < shopItems.Count; i++)
{
Console.WriteLine(shopItems[i].price);
}
#endregion
}
static int SortShopItem(ShopItem a,ShopItem b)
{
if (a.price > b.price)
{
return 1;
}else if (a.price == b.price)
{
return 0;
}
else
{
return -1;
}
}
}
class Item : IComparable<Item>
{
public int money;
public Item(int money)
{
this.money = money;
}
public int CompareTo(Item other)
{
//返回值的含义:
//小于0
//相当于放在当前对象前面
//等于0
//保持当前的位置不变
//大于0
//相当于放在当前对象后面
if ( this.money > other.money)
{
return 1;
}else if (this.money == other.money)
{
return 0;
}
else
{
return -1;
}
}
}
class ShopItem
{
public int price;
public ShopItem(int price)
{
this.price = price;
}
}
}
//总结:
//系统自带的变量(int, float, double......) 一般都可以直接 Sort
// 自定义类 Sort 有两种方式
// 1. 继承接口 IComparable
// 2. 在 Sort 中传入委托函数