`
Tony_Lee-S
  • 浏览: 81643 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

数组线性表ArrayList

阅读更多

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动态数组扩充实现线性表

    本话题聚焦于使用动态数组来实现线性表,这是一种常见的数据结构实现方式,因为它既保留了数组的高效访问特性,又能灵活地调整大小以适应数据的变化。 动态数组,也称为可变长度数组,不同于固定大小的数组,它允许...

    Java 继承 多态方面的实例源码.rar

    Java 继承 多态方面的实例源码,内容方面涉及对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏等。。。

    Java源码小合集:继承和多态相关的例子.rar

    继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、方法和变量、数据域和静态方法的隐藏、调用父类的方法...

    arrayList.cpp

    用数组实现的线性表,代码介绍可以参见博客:https://blog.csdn.net/qq_41453285/article/details/103198828

    Java 实现线性表

    线性表是计算机科学中一种基础的数据结构,它是由相同类型元素构成...在实际编程中,还应注意线性表的性能优化,例如,当数组操作不便时可以考虑使用动态数组或ArrayList,当需要高效插入删除时则可以考虑LinkedList。

    用数组实现一个线性表.zip

    在实际编程中,我们常常用数组来实现线性表,因为数组具有连续存储、随机访问等特性,使得操作高效且简单。本教程将深入探讨如何用数组来实现线性表,并涉及其相关的数据操作。 1. **数组的基本概念** 数组是一种...

    继承和多态的相关Java源码下载

    内容索引:Java源码,初学实例,继承,多态,Java源码 继承和多态的相关Java源码下载,比较散,像覆盖和重载、对象类Object和它的toString()方法、多态性、动态绑定和一般程序设计、数组线性表ArrayList类、final类、...

    java零基础自学之线性表与链表

    而ArrayList是通过Object数组实现的,因此可以存储任何类型的对象,但这也可能导致类型转换的问题。 2.3 链式存储结构 - 链表: 链表不依赖于连续的内存空间,而是通过节点之间的链接来表示顺序关系。链表的主要...

    高一凡代码-第2章 线性表.rar

    在某些编程语言中,如Java,有动态数组的概念,如ArrayList,它在内部自动管理数组的扩容,提供了一种介于数组和链表之间的线性表实现。 6. **循环链表**: 循环链表是链表的一种变体,最后一个元素的指针指向首...

    线性表实现源码-java

    2. 数组列表:Java的ArrayList类是线性表顺序存储的一个标准实现,它实现了List接口,提供了一套丰富的API用于操作线性表。ArrayList内部使用可变大小的Object数组,当添加元素导致数组满时,会自动扩容,通常是原...

    线性表算法的基本操作

    为了提高操作效率,有时会结合数组和链表的优点,采用**动态数组**(如Java的ArrayList)或**双向链表**。动态数组在需要时自动扩展,而双向链表允许从两个方向遍历,方便插入和删除。 **6. 线性表的其他操作** ...

    用C语言实现线性表的算法

    在C语言中实现线性表,通常会选择数组或链表作为底层数据结构,这两种方法各有优缺点。数组实现简单,访问速度快,但插入和删除操作可能涉及大量元素的移动;链表则提供了更灵活的动态扩展性,但在随机访问上不如...

    简单的 Java 线性表.zip

    在Java编程中,实现线性表通常有多种方式,包括数组、链表以及ArrayList和LinkedList等集合类。在这个"简单的 Java 线性表.zip"压缩包中,我们可以期待获取到关于Java实现线性表的基础知识和实践示例。 1. **数组...

    C#\实现线性表

    `ArrayList`是一个大小可动态扩展的数组,能够存储任意类型的对象。以下是一些关键的属性和方法: - **构造函数**:`ArrayList()`初始化一个空的`ArrayList`实例;`ArrayList(ICollection c)`从集合`c`初始化一个`...

    数据结构 线性表 栈 串 数组 树 图 排序 查找

    数组有静态数组和动态数组之分,动态数组如C++中的vector或Java中的ArrayList,允许在运行时调整大小。 5. **树**:树是一种非线性的数据结构,由n(n>0)个有限节点组成,其中一个特定的称为根节点,其余节点被...

    陈广 C#数据结构视频 第2章 线性表(2)

    在C#中,我们可以通过数组或者ArrayList、LinkedList等类来实现线性表。本章内容主要围绕线性表的概念、特点、操作以及在C#中的实现展开。 一、线性表的基本概念 线性表的特点在于它的顺序性,即每个元素都有一个...

    java编写的线性表

    在Java中实现线性表,我们可以利用数组或链表这两种方式。本项目提供了使用Java原生SDK实现的线性表,有助于深入理解和应用数据结构中的线性表概念。 首先,我们要了解线性表的基本操作。这些操作包括插入元素、...

    数据结构作业打印061

    链表是一种动态的数据结构,其中每个元素都指向下一个元素,而数组线性表是一种静态的数据结构,其中每个元素都是连续存储的。本文将讨论如何将链表转换为数组线性表,并实现链表的翻转操作。 一、链表转换为数组...

    java集合类详解(set list ArrayList等java集合类详述)

    ArrayList 是一个可以自动增长容量的数组,我们可以将其看作是一个可以自动增长容量的数组。ArrayList 提供了 toArray() 方法,返回一个数组。Arrays.asList() 方法返回一个列表。 迭代器(Iterator)提供了一种...

    线性表-顺序实现

    首先,线性表的顺序实现涉及到数组作为底层数据结构。数组是一种固定大小的连续内存空间,每个位置存储一个元素,通过下标来访问这些元素。在顺序表中,元素的插入、删除和查找操作都依赖于元素的位置。 1. 初始化...

Global site tag (gtag.js) - Google Analytics