探究C#中的ArrayList数组

一 、ArrayList对象的创建和使用

ArrayList是Java中的一个动态数组类,可以根据需要动态增加或减少元素的大小。要创建并使用ArrayList对象,首先需要导入ArrayList类:

import java.util.ArrayList;

然后可以通过以下步骤创建和使用ArrayList对象:

1.创建ArrayList对象:

ArrayList<String> list = new ArrayList<>();

在这个例子中,我们创建了一个ArrayList对象,其中存储的元素类型为String。你也可以根据需要选择其他类型,如Integer、Double等。

2.

向ArrayList中添加元素:

list.add("Apple");
list.add("Banana");
list.add("Orange");

3.访问ArrayList中的元素

String firstElement = list.get(0);
System.out.println("First element: " + firstElement);

4.遍历ArrayList中的元素:

for (String element : list) {
    System.out.println(element);
}

5.删除ArrayList中的元素:

list.remove("Banana");

6.检查ArrayList是否包含某个元素:

if (list.contains("Orange")) {
    System.out.println("ArrayList contains Orange");
}

通过这些操作,你可以创建、添加、访问、遍历、删除和检查ArrayList中的元素。ArrayList提供了丰富的方法来操作元素,是Java中常用的数据结构之一。

二、ArrayList数组:灵活性与性能平衡

1、使用ArrayList数组的关键是实例化ArrayList类,并通过Add方法向数组中添加元素。例如,可以定义一个ArrayList数组来存储不同类型的数据:

```csharp
ArrayList list = new ArrayList();
list.Add(10);
list.Add("Hello");
list.Add(3.14);
```

除了Add方法外,ArrayList还提供了一系列用于操作数组的方法,如Remove、Insert、Contains等,可以方便地对数组进行增删改查操作。

### ArrayList数组的优势

1.  灵活性:ArrayList数组可以存储任意类型的对象,不受类型限制,适用于需要存储多种类型数据的场景。

2. 性能平衡:虽然ArrayList在性能上不如泛型集合类(如List<T>),但在某些情况下,ArrayList的性能表现仍然可接受。同时,ArrayList可以在不确定元素类型的情况下提供一定的灵活性。

3. 兼容性:由于ArrayList是.NET Framework中的经典类,它的用法和接口在很多老的代码中仍然存在,具有一定的兼容性和稳定性。

总的来说,ArrayList数组是C#中一种经典的动态数组实现,具有一定的灵活性和性能平衡,适用于一些特定的场景。

本例学习使用ArrayList使用动态数组统计一个班的学生成绩,。创建一个C#控制台应用程序,命名为case0302。在Program类文件中引用命名空间System,接着编写如下代码源:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace case0302
{
    internal class Program
    {
        static void Main(string[] args)
        {
            List<int> scores = new List<int>();

            // 从键盘输入多个学生成绩
            Console.WriteLine("请输入学生成绩,输入-1结束:");
            int score = 0;
            while (score != -1)
            {
                score = Convert.ToInt32(Console.ReadLine());
                if (score != -1)
                {
                    scores.Add(score);
                }
            }

            // 求最高成绩、最低成绩、平均值
            int maxScore = scores.Max();
            int minScore = scores.Min();
            double avgScore = scores.Average();
            Console.WriteLine($"最高成绩:{maxScore}");
            Console.WriteLine($"最低成绩:{minScore}");
            Console.WriteLine($"平均成绩:{avgScore}");

            // 对学生成绩排序
            scores.Sort();
            Console.WriteLine("按从小到大排序:");
            foreach (var s in scores)
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            scores.Sort((a, b) => b.CompareTo(a));
            Console.WriteLine("按从大到小排序:");
            foreach (var s in scores)
            {
                Console.Write(s + " ");
            }
            Console.WriteLine();

            // 查找特定成绩并显示位置
            Console.WriteLine("请输入要查找的成绩:");
            int searchScore = Convert.ToInt32(Console.ReadLine());
            int index = scores.FindIndex(s => s == searchScore);
            if (index != -1)
            {
                Console.WriteLine($"成绩 {searchScore} 存在,位置为 {index}");
            }
            else
            {
                Console.WriteLine($"成绩 {searchScore} 不存在");
            }


            Console.WriteLine("按任意键继续...");
            Console.ReadKey();



        }
    }
}

保存项目文件并运行程序,程序运行效果如图所示:

ArrayList是Java中的一个动态数组类,可以根据需要动态增加或减少元素的大小。以下是关于ArrayList的一些重要特点:

  1. 动态大小:ArrayList的大小可以根据需要动态增长或减少,相比于普通数组,不需要指定固定大小。

  2. 泛型支持:ArrayList支持泛型,可以指定存储在ArrayList中的元素类型,这样可以在编译时检查类型安全性。

  3. 元素访问:可以通过索引访问ArrayList中的元素,也可以通过迭代器遍历ArrayList中的元素。

  4. 自动装箱拆箱:ArrayList中只能存储对象类型,如果要存储基本数据类型,会自动进行装箱操作。

  5. 数组扩容:当ArrayList中的元素个数超过当前容量时,会自动进行扩容操作,通常是扩容为原来容量的1.5倍。

  6. 线程不安全:ArrayList不是线程安全的,如果多个线程同时访问一个ArrayList实例并且至少有一个线程修改了列表的结构,必须在外部进行同步。

  7. 性能:ArrayList在随机访问和尾部插入/删除操作上性能较好,但在中间插入/删除操作上性能较差,因为需要移动元素。

总的来说,ArrayList是一个常用的集合类,适合用于需要频繁访问元素、尾部插入/删除元素的场景。

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值