简单数据结构类——Arraylist

简介: 简单数据结构类——Arraylist

Arraylist是一个C#已经封装好的类,它的本质是一个object类型的数组,Arraylist类可以帮我们实现很多方法,比如数组的增删查改等等。但是跟一般的数组比起来,速度上差些。在ArrayList中,我们可以存储相同类型和不同类型的元素。它属于非泛型集合。

那么我们改如何申明Arraylist呢,我们可以使用以下代码来申明:

Arraylist array = new Arraylist();//ArrayList在System.Collections命名空间下定义;因此,在程序中使用Arraylist时,必须添加System.Collections命名空间

ArrayList类有三个用于创建ArrayList的构造函数:

ArrayList():用于创建ArrayList类的实例;该实例为空,且没有初始容量。

ArrayList(Int32):用于创建ArrayList类的实例;该实例为空且具有指定的初始容量。

ArrayList(ICollection):用于创建一个数组列表,该列表使用指定集合中的元素初始化,并且具有从集合复制的相同初始容量。

那我们如何使用Arraylist进行增删查改呢

增:

Array.Add(1);
Array.Add(“123”);
Array.Add(true);
Array.Add(new object());
Array.Add(1);
ArrayList array2 = new ArrayList();
Array.Add(123);
//范围增加(批量增加,把另一个list容器里面的内容加到后面)
Array.AddRange(array2);

Array.Remove(1);//删除指定的元素,从头开始寻找,找到之后删除
Array.RemoveAt(2);//删除指定位置的元素
Array.Clear();//清空

Console.WriteLine(array[0]);//得到指定位置的元素
If(array.Contaions(“1234”))//查看元素是否存在
{
Console.WriteLine(“存在123”);
}
//正向查找元素位置,如果找到则返回位置的值,如果找不到则返回-1
int index = array.Index0f(true);
Console.WriteLine(index);
 
Console.WriteLine(array.Index0f(false));
//反向查找元素位置,返回时从头开始的索引数
int index = array.Index0f(true);
Console.WriteLine(index);

Console.WriteLine(array[0]);
array[0] = “999”;
Console.WriteLine(array[0]);

遍历

//长度
Console.WriteLine(array.Count);
//容量
避免产生过多的垃圾
Console.WriteLine(array.Capacity);
for(int i =0;i<array.Count;i++)
{
Console.WriteLine(array[i]);
}
//迭代式遍历
Foreach(object item in array)
{
Console.WriteLine(item);
}

装箱拆箱

ArrayList本质上是一个可以自动扩容的object数组,由于用万物之父来存储数据,自然存在装箱拆箱。当往其中进行值类型存储时就是在装箱,当将值类型对象取出来转换使用时,就存在拆箱。所以我们ArrayList尽量少用。

举个例子:

int i=1;
Array[0]=i;//装箱
I=(int)array[0];//拆箱
目录
相关文章
|
4月前
|
Java
【Java集合类面试二十六】、介绍一下ArrayList的数据结构?
ArrayList是基于可动态扩展的数组实现的,支持快速随机访问,但在插入和删除操作时可能需要数组复制而性能较差。
|
1月前
|
存储 Java 索引
Java中的数据结构:ArrayList和LinkedList的比较
【10月更文挑战第28天】在Java编程世界中,数据结构是构建复杂程序的基石。本文将深入探讨两种常用的数据结构:ArrayList和LinkedList,通过直观的比喻和实例分析,揭示它们各自的优势与局限,帮助你在面对不同的编程挑战时做出明智的选择。
|
2月前
|
Java C++ 索引
让星星⭐月亮告诉你,LinkedList和ArrayList底层数据结构及方法源码说明
`LinkedList` 和 `ArrayList` 是 Java 中两种常见的列表实现。`LinkedList` 基于双向链表,适合频繁的插入和删除操作,但按索引访问元素效率较低。`ArrayList` 基于动态数组,支持快速随机访问,但在中间位置插入或删除元素时性能较差。两者均实现了 `List` 接口,`LinkedList` 还额外实现了 `Deque` 接口,提供了更多队列操作。
27 3
|
2月前
|
存储 缓存 索引
从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低
本文详细对比了ArrayList和LinkedList的查询效率,从底层数据结构和CPU缓存两个方面进行分析。ArrayList基于动态数组,支持随机访问,查询时间复杂度为O(1),且CPU缓存对其友好;而LinkedList基于双向链表,需要逐个节点遍历,查询时间复杂度为O(n),且CPU缓存对其帮助不大。文章还探讨了CPU缓存对数组增删操作的影响,指出缓存主要作用于读取而非修改。通过这些分析,加深了对这两种数据结构的理解。
47 2
|
2月前
|
设计模式 安全 容器
数据结构第一篇【探究List和ArrayList之间的奥秘 】
数据结构第一篇【探究List和ArrayList之间的奥秘 】
26 5
|
3月前
|
存储 Java 程序员
【数据结构】初识集合&深入剖析顺序表(Arraylist)
Java集合框架主要由接口、实现类及迭代器组成,包括Collection和Map两大类。Collection涵盖List(有序、可重复)、Set(无序、不可重复),Map则由键值对构成。集合通过接口定义基本操作,具体实现由各类如ArrayList、HashSet等提供。迭代器允许遍历集合而不暴露其实现细节。List系列集合元素有序且可重复,Set系列元素无序且不可重复。集合遍历可通过迭代器、增强for循环、普通for循环及Lambda表达式实现,各有适用场景。其中ArrayList实现了动态数组功能,可根据需求自动调整大小。
40 11
|
2月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
31 0
|
6月前
|
存储 Java API
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
|
6月前
|
存储 Java 索引
实现一个类似ArrayList的数据结构
实现一个类似ArrayList的数据结构
53 4
|
6月前
|
存储 Java 索引
【Java】LinkedList vs. ArrayList:Java中的数据结构选择
【Java】LinkedList vs. ArrayList:Java中的数据结构选择
31 3