关于List集合的一些基本操作

本文介绍了一个C#中的Student类,该类实现了IFormattable和IComparable接口,用于存储学生信息并提供排序和格式化输出功能。同时,文章展示了如何创建Student实例,进行列表操作,如添加、删除、查找、排序,并将Student列表转换为Person列表。
摘要由CSDN通过智能技术生成

声明需要操作的Student类以及要转换的Person类

public class Student:IFormattable,IComparable<Student>
    {
        public int ID { get; set; }
        public string Name { get; set; }

        public double Score { get; set; }
        public Student(int id,string name,double score)
        {
            this.ID = id;
            this.Name = name;
            this.Score = score;
        }
        public override string ToString()
        {
            return string.Format( "Name:{0} ",Name);
        }

        public string ToString(string format, IFormatProvider formatProvider)
        {
            if (format==null) format = "N";
            switch (format.ToUpper())
            {
                case "N":   //Name
                    return ToString();
                case "NI":  //Name ID
                    return string.Format("Name:{0},ID:{1}",Name,ID);
                case "A":  //Name ID Score
                    return string.Format("Name:{0},ID:{1},Sceor:{2}", Name, ID, Score);
                default:
                    throw new FormatException(string.Format(formatProvider, "Format{0} is not suported", format));
            }
        }
        //实现排序功能,需要实现此方法,默认用名排序
        public int CompareTo(Student other)
        {
            int compare = this.Name.CompareTo(other.Name);
            if (compare==0)
            {
                return this.Score.CompareTo(other.Score);
            }
            return compare;
        }
    }
    public class Person
    {
        public int Id;

        public string Name;

        public Person(string name,int id)
        {
            this.Name = name;
            this.Id = id;
        }

    }

基本操作命令

var XM = new Student(001,"小明",80);
            var XG = new Student(002,"小刚",85);
            var stus = new List<Student>() { XM, XG };
            stus.Add(new Student(003,"小红",90));

            //通过AddRange添加多个
            stus.AddRange(new Student[] { new Student(004,"小芳",85),new Student(005,"小丽",82)});

            //初始化时直接添加多个实例
            //var stus = new List<Student>(new Student[] { new Student(004, "小芳", 85), new Student(005, "小丽", 82) });

            //通过Insert添加
            //stus.Insert(2,new Student(002,"小李",58));

            //通过InsertRange在指定索引处添加
            //stus.InsertRange(2,new Student[] { new Student(004, "小芳", 85), new Student(005, "小丽", 82) });

            //通过所引起访问
            Student stu1 = stus[2];

            //统计列表的数量
            //Console.WriteLine(stus.Count);

            //通过For循环打印列表
            //for (int i = 0; i < stus.Count; i++)
            //{
            //    Console.WriteLine(stus[i]);
            //}

            //通过foreach打印
            //foreach (Student stu in stus)
            //{
            //    Console.WriteLine(stu);
            //}

            //通过ForEach打印
            stus.ForEach(Console.WriteLine);

            //可以通过更改A来控制显示的信息
            stus.ForEach(r => Console.WriteLine("{0:A}",r));

            //根据索引删除元素
            //stus.RemoveAt(3);

            //根据对象移除
            //stus.Remove(stus[2]);
            //stus.Remove(XG);
            //int index1 = stus.IndexOf();

            //通过对象某个属性查找匹配对象的索引
            int index2 = stus.FindIndex(r => r.ID == 003);

            //通过对象某个属性查找所有匹配对象中的第一个对象
            var stu2 = stus.FindIndex(r => r.ID == 003);

            //通过对象某个属性查找所有匹配对象中的最后一个对象
            var stu3 = stus.FindLast(r => r.ID == 003);

            //只有集合中的元素实现了Icomparable接口,才能使用不带参数的Sort()方法

            //查找符合条件的实例集合
            List<Student> stus1 = stus.FindAll(r=>r.Score>90);

            //通过reverse()方法可以逆转序列
            stus.Reverse();

            //根据分数对列表排序
            stus.Sort((s1,s2)=>s1.Score.CompareTo(s2.Score));

            //将student列表转成erson列表,注意两个类之间属性的转换关系
            List<Person> persons = stus.ConvertAll(s=>new Person(s.Name,s.ID));
            persons.ForEach(s=>Console.WriteLine(s.Name+s.Id));

 

 

Java集合基本操作包括增加元素、删除元素、获取元素和遍历元素。 增加元素可以使用List的add方法,将元素添加到集合的末尾;使用Set的add方法,将元素添加到集合中,但是不允许重复;使用Map的put方法,将键值对添加到集合中。 删除元素可以使用List的remove方法,根据索引或者元素值删除指定的元素;使用Set的remove方法,根据元素值删除指定的元素;使用Map的remove方法,根据键删除指定的元素。 获取元素可以使用List的get方法,根据索引获取指定位置的元素;使用Set没有获取单个元素的方法,只能进行全局遍历获取指定元素;使用Map的get方法,根据键获取指定的元素。 遍历元素可以使用普通for循环,根据索引依次获取元素;使用增强for循环,直接遍历集合中的元素;使用迭代器遍历集合,通过hasNext和next方法获取下一个元素。 以上是java集合基本操作,根据不同的集合类型和具体需求,可以选择合适的方法进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Java中集合的简单使用](https://blog.csdn.net/qq_45831363/article/details/127850893)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值