List< int > lens = words.ConvertAll(w => w.Length); 批量集合转换 给w变量赋值在存起来
HashSet< T > hashSet = new HashSet< T >(); 去重复集合:HashSet存不了重复内容
nums.Sort((a, b) => { return a.CompareTo(b);} 排序:a和b谁大谁去后
.ConvertAll
示例代码:
List.ConvertAll 完整作用详解(C#)核心作用ConvertAll 是 List 自带的批量元素转换方法:
public List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> converter)
T:原列表元素类型(示例里是 string)
TOutput:转换后新列表类型(示例里是 int)
converter:转换委托,输入单个旧元素,输出转换后的新值
案例:
List< string > words = new List< string > { "hi", "hello" };
// Converter委托,把每个string转int长度
List< int > lens = words.ConvertAll(w => w.Length);
// lens结果:[2,5]
遍历原 List 里每一个元素,用你提供的转换逻辑处理每个元素,最后返回一个全新类型、全新长度的 List。
HashSet去重
HashSet<T> hashSet = new HashSet<T>();
HashSet<T> 泛型哈希集合,核心特性:不允许存放重复元素,自带去重能力。
T 可以是任意的int string 。。。
// 1.方法名后的<T>:声明泛型参数T,告诉编译器这里有个可变类型
public static List<T> DistinctList<T>(
// 2.参数List<T>:传入的列表元素类型是T
List<T> source
)
// 3.返回值 List<T>:返回的新列表元素类型也必须是T
判断两个列表是否一样案例题
/// <summary>
/// 判断两个列表元素是否完全相同(顺序无关,元素次数一致)
/// </summary>
public static bool IsSameElements<T>(List<T> listA, List<T> listB)
{
// 1. 长度不同直接返回false(数量都不一样不可能相等)
if (listA.Count != listB.Count)
return false;
// 2. 复制两份新列表,避免修改原数据
var tempA = new List<T>(listA);
var tempB = new List<T>(listB);
// 3. 排序,统一顺序
tempA.Sort();
tempB.Sort();
// 4. 两个序列逐项对比是否完全一致
return tempA.SequenceEqual(tempB);
}
1.对比长度:Count
2.排序方法:Sort()
3. 逐项对比函数:SequenceEqual()
排序
简单示例 1:数字从小到大升序
csharp
运行
List<int> nums = new List<int> { 5, 2, 8, 1 };
nums.Sort((a, b) =>
{
// a在前、b在后,实现升序
return a.CompareTo(b);
});
// 结果:1 2 5 8
简单示例 2:数字从大到小降序
csharp
运行
List<int> nums = new List<int> { 5, 2, 8, 1 };
nums.Sort((a, b) =>
{
// b在前、a在后,实现降序
return b.CompareTo(a);
});
// 结果:8 5 2 1
简单示例 3:字符串按长度升序(短的在前)
csharp
运行
List<string> words = new List<string> { "aa", "a", "aaa" };
words.Sort((s1, s2) =>
{
return s1.Length.CompareTo(s2.Length);
});
// 结果:a aa aaa
最简一行简写(不用大括号)
csharp
运行
List<int> list = new List<int> { 3, 1, 2 };
list.Sort((x, y) => x.CompareTo(y));
CompareTo() 是所有基础类型(int、string、double)自带的比较方法,用来对比两个值的大小关系,返回 int 整数。
语法:值1.CompareTo(值2)
核心规则记住
return 负数:第一个参数放前面
return 正数:第二个参数放前面
return 0:两者相等,顺序不变
判断大小,谁小谁第一个呗。
private void button10_Click(object sender, EventArgs e)
{
List<int> nums = new List<int> { 5, 2, 8, 1 };
nums.Sort((a, b) => {
return a.CompareTo(b);
/*
举例:{ 5,2,8,1}
程序会多次两两对比,每一轮 a、b 的值都不一样:
第一次对比 a5 和 b2 → a = 5,b = 2
下一轮对比 a5 和 b8 → a = 5,b = 8
再一轮对比 a2 和 b1 → a = 2,b = 1
比大小
谁大谁滚后面
*/
});
foreach (var x in nums) Console.Write(x + " ");
}