using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _01_list
{
internal class Program
{
static void Main(string[] args)
{
// list 和 ArrayList 内置类 是一个数组的封装类
//List 不存在装箱拆箱
//list<存储的数据类型> 这中动态书写的形式叫做泛型
List<int> nums = new List<int>() { 1, 2, 3, 4, 5 };
List <int> nums1 = new List <int>(new int[] { 1, 2, 3, 4 });
// 获取数组的长度
Console.WriteLine(nums.Count);
// 获取存储数据的容量
Console.WriteLine(nums.Capacity);
// list 最小的内存空间是四
// 向数组中添加元素
nums.Add(110);// 添加一个元素
nums.AddRange(new int[] { 111, 110, 113 });// 添加一个范围的元素
// 向数组中插入元素
nums.Insert(2, 100);// 在索引为2的位置插入一个元素
nums.InsertRange (2, new int[] { 200, 110, 202 });// 在索引为2的位置插入一个范围的元素
// 从数组中删除元素
//nums.Remove(100);// 删除第一个100的元素
//nums.RemoveAt(2);// 删除索引为2的元素
//nums.RemoveRange(2, 2);// 删除索引为2的元素开始删除指定个数的元素
//nums.RemoveAll((int num ) =>
//{
// // Remove 的参数是一个回调函数
// // 回调函数中需要接受一个参数 参数是数组中的每个元素
// // 回调函数的返回值是一个 bool 值
// // 如果返回 true 则表示删除当前元素
// // 如果返回 false 则表示保留当前元素
// return num == 110;
//});
// 判断数组中是否包含元素
Console.WriteLine(nums.Contains(110));
// 获取元素位置
Console.WriteLine(nums.IndexOf(110));// 获取元素第一次出现的位置
Console.WriteLine(nums.LastIndexOf(110));// 获取元素最后一次出现的位置
// 查找数组中的第一次出现的元素 并返回元素
int num = nums.Find((int item ) =>
{
// item 表示数组中的元素
return item == 110;
});
// 查找数组中第一次出现的元素的索引
int index = nums.FindIndex((int item) =>
{
return item == 110;
});
// 查找数组中最后一次出现的元素 并返回元素
int num1 = nums.FindLast((int item) =>
{
return item == 110;
});
// 查找数组中最后一次出现的元素的索引
int index1 = nums.FindLastIndex((int item) =>
{
return item == 110;
});
// 获取数组中所有满足条件的元素 放到一个数组中并返回
List <int> list = nums.FindAll((int item) => { return item == 110; });
Console.WriteLine("=========================");
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
反转数组的方法
//nums.Reverse();
数组排序的方法
//nums.Sort();// 将数组中的元素进行升序排序
nums.Sort ((int item1, int item2) =>
{
// item1 item2 表示数组中的元素
// 如果需要 item1 在 item2 前面则返回 -1 值只要时是负数即可
// 如果需要 item1 在 item2 后面则返回 1 值只要时是正数即可
// 如果不需要排序则返回 0
// return item2 - item1 一定是降序 return item1 - item2 一定是升序
//if ( item1 > item2)
//{
// return 1;
//}
//else if (item1 < item2)
//{
// return -1;
//}
//else
//{
// return 0;
//}
return item2 - item1;
});
// nums.Clear(); // 清空数组
Console.WriteLine("-----------------------------------------");
// 循环遍历数组
for (int i = 0; i < nums.Count; i++)
{
Console.WriteLine(nums[i]);
}
Console.ReadLine();
}
}
}
应用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace _02_案例
{
internal class Program
{
static void Main(string[] args)
{
Person p1 = new Person("张三", 20, "男");
Person p2 = new Person("李四", 18, "男");
Person p3 = new Person("王五", 15, "男");
Person p4 = new Person("小帅", 25, "男");
Person p5 = new Person("小美", 30, "女");
Person p6 = new Person("小红", 16, "女");
Person p7 = new Person("小兰", 17, "男");
Person p8= new Person(" 小绿", 17, "女");
Person p9 = new Person("小紫", 33, "女");
Person p10 = new Person("小橙", 22, "女");
List<Person> list = new List<Person>() { p1, p3, p4, p5, p6, p7, p8, p9, p10 };
List<Person> girs = list.FindAll((Person item) =>
{
//item 是数组中的每一个元素
return item.Gender == "女" && item.Age > 18 && item.Age <=24;
});
for (int i = 0; i < girs.Count; i++)
{
Console.WriteLine(girs[i].Name);
}
Person gir1 = list.Find((Person item) =>
{
return item.Gender == "女";
});
Console.WriteLine("第一个女孩的名字是:"+ gir1.Name);
Console.ReadLine();
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string Gender { get; set; }
public int Id { get; }
static Random random = new Random();
public Person() { }
public Person(string name, int age, string gender)
{
Name = name;
Age = age;
Gender = gender;
Id = random.Next();
}
}
}