ArrayList集合常用的方法详细讲解

ArrayList集合

在前面我们学习了数组,数组可以保存多个元素,但在某些情况下无法确定到底要保存多少个元素,此时数组将不再适用,因为数组的长度不可变。例如,要保存一个学校的学生,由于不停有新生来报道,同时也有学生毕业离开学校,这时学生的数目很难确定。为了保存这些数目不确定的元素,JDK中提供了一系列特殊的类,这些类可以存储任意类型的元素,并且长度可变,统称为集合。在这里,我们先介绍ArrayList集合,其他集合在后续课程中学习。

ArrayList集合是程序中最常见的一种集合,它属于引用数据类(类)。在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。

1.1集合的创建

创建集合的常用格式在此说明一下:

导包:import java.util.ArrayList;

创建对象:与其他普通的引用数据类型创建方式完全相同,但是要指定容器中存储的数据类型:

ArrayList<要存储元素的数据类型>变量名 = new ArrayList<要存储元素的数据类型>();

1、集合中存储的元素,只能为<>括号中指定的数据类型元素;

2、“<要存储元素的数据类型>”中的数据类型必须是引用数据类型,不能是基本数据类型;

下面给出8种基本数据类型所对应的引用数据类型表示形式:

我们通过举几个例子,来明确集合的创建方式:

  • 存储String类型的元素

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

  • 存储int类型的数据

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

  • 存储Phone类型的数据

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

1.2 集合中常用方法

接下来,我们来学习下ArrayList集合提供的一些常用方法,如下表:

通过代码演示上述方法的使用。ArrayListDemo01.java

import java.util.ArrayList;
public class ArrayListDemo01 {
  public static void main(String[] args) {
    // 创建ArrayList集合
    ArrayList<String> list = new ArrayList<String>();
    // 向集合中添加元素
    list.add("stu1");
    list.add("stu2");
    list.add("stu3");
    list.add("stu4");
    // 获取集合中元素的个数
    System.out.println("集合的长度:" + list.size());
    // 取出并打印指定位置的元素
    System.out.println("第1个元素是:" + list.get(0));
    System.out.println("第2个元素是:" + list.get(1));
    System.out.println("第3个元素是:" + list.get(2));
    System.out.println("第4个元素是:" + list.get(3));
  }
}

上面代码执行结果:

集合的长度:4

第1个元素是:stu1

第2个元素是:stu2

第3个元素是:stu3

第4个元素是:stu4

1.3集合的遍历

通过集合遍历,得到集合中每个元素,这是集合中最常见的操作。集合的遍历与数组的遍历很像,都是通过索引的方式,集合遍历方式如下:ArrayListDemo02.java

1  import java.util.ArrayList;
2  public class ArrayListDemo02 {
3    public static void main(String[] args) {
4      //创建ArrayList集合
5      ArrayList<Integer> list = new ArrayList<Integer>();
6      //添加元素到集合
7      list.add(13);
8      list.add(15);
9      list.add(22);
10      list.add(29);
11      //遍历集合
12      for (int i = 0; i < list.size() ; i++) {
13        //通过索引,获取到集合中每个元素
14        int n = list.get(i) ;
15        System.out.println(n);
16      }
17    }
18  }

上述代码中,第5行定义了一个可以存储int元素的集合;第7-10行,实现将int类型数值存储到集合中;第12-16行,实现遍历集合元素。这里要强调一点,get方法返回值的类型为集合中元素的类型。

1.4集合中的常用方法补充

ArrayList集合提供的一些常用方法,如下表:

  • boolean add(int index, Object obj)
  • 功能:在集合中指定index位置,添加新元素obj
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用add(1,“javaWeb”)后,集合list中的元素为[“java”,“javaWeb”,“JavaEE”]。
  • Object set(int index, Object obj)
  • 功能:用指定元素obj替代集合中指定index位置的元素
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用set(0,“javaWeb”)后,集合list中的元素为[“javaWeb”,“JavaEE”]。
  • Object remve(int index)
  • 功能:从集合中删除指定index处的元素,返回该元素
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用remove(0)后,集合list中的元素为[“JavaEE”],返回值为“java”。
  • void clear()
  • 功能:清空集合中所有元素
  • 功能说明:假设集合list中有元素[“java”,“javaEE”],当使用clear()后,集合list中的元素为空[ ]。

推荐阅读目录

Java学习求职路线(资料、视频、源码、项目实战)

程序员用这5种方式学习编程最无效,停止这些可以少走弯路!

大学毕业刚培训完Java,没有经验怎么找工作呢?

⊙请问你知道什么是栈吗?

⊙看看你对队列的了解有多少?

⊙面试题68(加深你对栈的理解_让你知道什么是栈)

⊙来测试一下你对数据结构中的栈和队列的了解有多少?

⊙面试题63(链表,哈希表)

⊙ 请你对Java中树的了解有多少?

这个培训机构怎么?

JavaEE就业学习路线(给初学者以及自学者一个学习方向)?

Servlet实现一个简单的登录【验证码】功能

二维码生成源码

java学习微信讨论群

Spring学习笔记

Mybatis学习笔记

原文发布于微信公众号 - java学习(javaxxf)

原文发表时间:2018-05-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java编程

Java程序员们最常犯的10个错误

将数组转化为一个列表时,程序员们经常这样做:

1.5K1
来自专栏Java帮帮-微信公众号-技术文章全总结

第十九天 集合-Map接口容器工具类集合框架总结【悟空教程】

Map集合的特点,如是否可重复,是否有序仅作用在键上,如HashMap集合的键不得重复,值可以重复。

2013
来自专栏desperate633

LintCode 主元素 III题目分析代码

给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。 注意事项 数组中只有唯一的主元素

581
来自专栏Python爱好者

Java基础笔记17

1466
来自专栏chenjx85的技术专栏

leetcode-367-Valid Perfect Square

2474
来自专栏Java编程

Java程序员们最常犯的10个错误

将数组转化为一个列表时,程序员们经常这样做:

8631
来自专栏Celebi的专栏

C/C++ 学习笔记五(结构体、字符与字符串)

工作中经常使用到C/C++,为对C有个比较深刻的了解,重新拾起学习C的任务。在看书的同时,记录下思考的过程,也记录下重要的知识点。

4830
来自专栏LanceToBigData

JavaSE(八)之集合概述

前几天其实一直在学习关于linux的内容和kvm虚拟化的知识。今天有时间来回顾一下集合相关的知识,接下来我将带大家一起来回顾一起集合关联的知识。 不要辜负自己花...

1845
来自专栏和蔼的张星的图像处理专栏

14. 二分查找

给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组...

1292
来自专栏Hongten

java中的List记录是否完全匹配方法

===================================================

1051

扫码关注云+社区

领取腾讯云代金券