list(概念和简单应用)

cs 复制代码
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(girsi.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();

}

}

}

相关推荐
闪电悠米6 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
WL学习笔记6 小时前
堆(数据结构)
数据结构·
wabs66610 小时前
关于图论【卡码网100.最大岛屿的面积的思考】
数据结构·算法·图论
yuannl1012 小时前
图的最短路径Dijkstra
数据结构
zander25813 小时前
138. 随机链表的复制
数据结构·算法·链表
过期动态13 小时前
【LeetCode 热题 100】找到字符串中所有字母异位词
java·数据结构·算法·leetcode·职场和发展·rabbitmq
来一碗刘肉面13 小时前
栈在递归中的应用
数据结构·算法
皓月斯语13 小时前
程序设计语言的特点
开发语言·数据结构·c++
邪修king14 小时前
C++ 进阶终章:异常机制与智能指针全解 —— 从错误处理到 RAII 资源管理,打通现代 C++ 的核心命脉
android·数据结构·c++
Adios7941 天前
设置交集大小至少为2
数据结构·算法·leetcode