Java提供ArrayList类来存储不限定个数的对象。下面是ArrayList中的一些方法。
ArrayList()
创建一个空的线性表
add(o: Object)
在这个线性表的末尾追加一个新元素o
add(index: int, o: Object)
在这个线性表中的特定下标处增加一个新元素o
clear()
从这个线性表中删除所有的元素
contains(o: Object)
如果这个线性表包含元素o则返回true
get(index: int)
返回这个线性表在特定下标处的元素
indexOf(o: Object)
返回这个线性表中第一个匹配元素的下标
isEmpty()
如果这个线性表不包含元素则返回true
lastIndexOf(o: Object)
返回这个线性表中最后一个匹配元素的下标
remove(o: Object)
从这个线性表中删除元素o
size()
返回这个线性表中元素的个数
remove(index: int)
删除指定下标处的元素
set(index: int, o: Object)
设置在特定下标处的元素
下面是使用ArrayList存储对象的一个例子
public class TextArrayList {
public static void main(String[] args) {
java.util.ArrayList cityList = new java.util.ArrayList();
cityList.add("London");
cityList.add("Denver");
cityList.add("Paris");
cityList.add("Miami");
cityList.add("Seoul");
cityList.add("Tokyo");
System.out.println("List size?" + cityList.size());
System.out.println("Is Miami in the list?" + cityList.contains("Miami"));
System.out.println("The location of Denver in the list?" + cityList.indexOf("Denver"));
System.out.println("Is the list empty?" + cityList.isEmpty());
cityList.add(2,"Xian");
cityList.remove("Miami");
cityList.remove(1);
System.out.println(cityList.toString());
for (int i = cityList.size() - 1; i >= 0; i--) {
System.out.print(cityList.get(i) + "");
}
System.out.println();
java.util.ArrayList list = new java.util.ArrayList();
list.add(new Circle4(2));
list.add(new Circle4(3));
System.out.println("The area of the circle?" + ((Circle4)list.get(0)).getArea());
}
}
输出
List size? 6
Is Miami in the list? true
The location of Denver in the list? 1
Is the list empty? false
[London, Xian, Paris, Seoul, Tokyo]
Tokyo Seoul Paris Xian London
The area of the circle? 12.566370614359172
程序使用无参构造方法创建一个ArrayList(第3行),add方法将Object的任一实例加入线性表中。由于String是Object的一个子类,所以字符串可以加入到线性表中。add方法(第4~9行)将一个对象加入到线性表的末尾。所以,在执行完cityList.add("London")(第4行)之后,这个线性表包含[London]
执行完cityList.add("Denver")(第5行)后,这个线性表包含[London,Denver]
在加入Paris、Miami、Seoul和Tokyo之后(第6~9行),这个线性表包含[London,Denver,Paris,Miami,seoul,Tokyo]
调用size()(第10行)返回这个线性表的大小,线性表的当前大小为6.调用contains("Miami")(第11行)检测这个对象是否在这个线性表中。在这种情况下,它返回true,因为Miami在这个线性表中。调用indexOf("Denver")(第12行)返回该对象在线性表中的索引值,这里它的值为1。如果对象不在这个线性表中,它返回-1。isEmpty()方法(第13行)检测这个线性表是否为空。因为当前列表不为空,所以它返回false。
语句cityList.add(2,"Xian")(第14行)在这个线性表的指定下标位置插入一个对象。该语句执行完之后,线性表变成[London,Denver,Xina,Paris,Miami,Seoul,Tokyo]
语句cityList.remove("Miami")(第15行)从线性表中删除该对象。该语句执行后,线性表就变成[London,denver,Xian,Paris,Seoul,Tokyo]
语句cityList.remove(1)(第16行)从线性表中删除指定下标位置的对象,该语句执行后,线性表变成[London,Xian,Paris,Seoul,Tokyo]
第17行的语句相当于
System.out.println(cityList);
方法toString()返回表示线性表的字符串,其形式为[e0.toString(),e1.toString(),...,ek.toString()],这里的e0,e1,...,ek都是线性表中的元素。
方法get(index)(第19行)返回指定下标位置处的对象。
可以像使用数组一样使用ArrayList对象,但是两者还是有很多不同之处。下表列出了它们的异同点。
一旦创建了一个数组,它的大小就确定下来了。可以使用方括号访问数组元素(例如:a[index])。当创建ArrayList后,它的大小为0.如果元素不在线性表中,就不能使用get和set方法。向线性表中添加、插入和删除是比较容易的,而向数组中添加、插入和删除元素是比较复杂的。为了实现这些操作,必须编写代码操纵这个数组。
数组和ArrayList之间的异同
创建数组、ArrayList |
Object[] a =new Object[10] |
ArrayList list = new.ArrayList() |
引用元素 |
a[index] |
list.get(index) |
更新元素 |
a[index] = "London"; |
list.set(index, "London"); |
返回大小 |
a length |
list.size() |
添加一个新元素 |
|
list.add("London") |
插入一个新元素 |
|
list.add(index,"London") |
删除一个指定下标的元素 |
|
list.remove(index) |
删除一个特定内容的元素 |
|
list.remove(Object) |
删除所有元素 |
|
list.clear() |
分享到:
相关推荐
本话题聚焦于使用动态数组来实现线性表,这是一种常见的数据结构实现方式,因为它既保留了数组的高效访问特性,又能灵活地调整大小以适应数据的变化。 动态数组,也称为可变长度数组,不同于固定大小的数组,它允许...
Java 继承 多态方面的实例源码,内容方面涉及对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏等。。。
继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏、调用父类的方法...
用数组实现的线性表,代码介绍可以参见博客:https://blog.csdn.net/qq_41453285/article/details/103198828
线性表是计算机科学中一种基础的数据结构,它是由相同类型元素构成...在实际编程中,还应注意线性表的性能优化,例如,当数组操作不便时可以考虑使用动态数组或ArrayList,当需要高效插入删除时则可以考虑LinkedList。
在实际编程中,我们常常用数组来实现线性表,因为数组具有连续存储、随机访问等特性,使得操作高效且简单。本教程将深入探讨如何用数组来实现线性表,并涉及其相关的数据操作。 1. **数组的基本概念** 数组是一种...
内容索引:Java源码,初学实例,继承,多态,Java源码 继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、...
而ArrayList是通过Object数组实现的,因此可以存储任何类型的对象,但这也可能导致类型转换的问题。 2.3 链式存储结构 - 链表: 链表不依赖于连续的内存空间,而是通过节点之间的链接来表示顺序关系。链表的主要...
在某些编程语言中,如Java,有动态数组的概念,如ArrayList,它在内部自动管理数组的扩容,提供了一种介于数组和链表之间的线性表实现。 6. **循环链表**: 循环链表是链表的一种变体,最后一个元素的指针指向首...
2. 数组列表:Java的ArrayList类是线性表顺序存储的一个标准实现,它实现了List接口,提供了一套丰富的API用于操作线性表。ArrayList内部使用可变大小的Object数组,当添加元素导致数组满时,会自动扩容,通常是原...
为了提高操作效率,有时会结合数组和链表的优点,采用**动态数组**(如Java的ArrayList)或**双向链表**。动态数组在需要时自动扩展,而双向链表允许从两个方向遍历,方便插入和删除。 **6. 线性表的其他操作** ...
在C语言中实现线性表,通常会选择数组或链表作为底层数据结构,这两种方法各有优缺点。数组实现简单,访问速度快,但插入和删除操作可能涉及大量元素的移动;链表则提供了更灵活的动态扩展性,但在随机访问上不如...
在Java编程中,实现线性表通常有多种方式,包括数组、链表以及ArrayList和LinkedList等集合类。在这个"简单的 Java 线性表.zip"压缩包中,我们可以期待获取到关于Java实现线性表的基础知识和实践示例。 1. **数组...
`ArrayList`是一个大小可动态扩展的数组,能够存储任意类型的对象。以下是一些关键的属性和方法: - **构造函数**:`ArrayList()`初始化一个空的`ArrayList`实例;`ArrayList(ICollection c)`从集合`c`初始化一个`...
数组有静态数组和动态数组之分,动态数组如C++中的vector或Java中的ArrayList,允许在运行时调整大小。 5. **树**:树是一种非线性的数据结构,由n(n>0)个有限节点组成,其中一个特定的称为根节点,其余节点被...
在C#中,我们可以通过数组或者ArrayList、LinkedList等类来实现线性表。本章内容主要围绕线性表的概念、特点、操作以及在C#中的实现展开。 一、线性表的基本概念 线性表的特点在于它的顺序性,即每个元素都有一个...
在Java中实现线性表,我们可以利用数组或链表这两种方式。本项目提供了使用Java原生SDK实现的线性表,有助于深入理解和应用数据结构中的线性表概念。 首先,我们要了解线性表的基本操作。这些操作包括插入元素、...
链表是一种动态的数据结构,其中每个元素都指向下一个元素,而数组线性表是一种静态的数据结构,其中每个元素都是连续存储的。本文将讨论如何将链表转换为数组线性表,并实现链表的翻转操作。 一、链表转换为数组...
ArrayList 是一个可以自动增长容量的数组,我们可以将其看作是一个可以自动增长容量的数组。ArrayList 提供了 toArray() 方法,返回一个数组。Arrays.asList() 方法返回一个列表。 迭代器(Iterator)提供了一种...
首先,线性表的顺序实现涉及到数组作为底层数据结构。数组是一种固定大小的连续内存空间,每个位置存储一个元素,通过下标来访问这些元素。在顺序表中,元素的插入、删除和查找操作都依赖于元素的位置。 1. 初始化...