杨老师课堂之ArrayList集合解析

1.概述

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

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

2.

1.1集合的创建

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

导包:import java.util.ArrayList;

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

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

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

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

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

  • 存储String类型的元素
    • ArrayList list = new ArrayList();
  • 存储int类型的数据
    • ArrayList list = new ArrayList();
  • 存储Phone类型的数据
    • ArrayListlist = new ArrayList();

1.2 集合中常用方法

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

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

package cn.javabs.list.demo;
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));
 }
}

代码运行后截图:

1.3 集合中常用方法

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

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

上述代码中,第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中的元素为空[ ]。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

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

76. 最长上升子序列动态规划+二分查找

给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问题是在一个无序的给定序列中找到一个尽可能...

6331
来自专栏lgp20151222

java中两个map比较

1322
来自专栏LanceToBigData

JavaSE(八)之Collection总结

  前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明:...

2466
来自专栏鸿的学习笔记

Python和Scala的集合和映射

在入门系列的最后,让我们来看看基于hash表的两种常见的数据结构,集合和映射。在Scala里的集合和映射,这两种数据结构都有可变和不可变的两种版本,区别仅仅在于...

692
来自专栏Phoenix的Android之旅

Java面试的基础中的基础

面试时经常从Java的基础知识开始,最基础的部分莫过于Java的集合类型。我们知道Java的集合类型有三种,Set,List,Map,那这三种有什么区别呢。

1011
来自专栏java学习

Java每日一练(2017/8/17)

每日一句 学的到东西的事情是锻炼,学不到的是磨练。 查看以前的所有练习题目以及答案:https://mp.weixin.qq.com/mp/homepage?_...

2929
来自专栏编程

Python基础1

数据类型 Python3中有6钟标准的数据类型:Number(数字)、String(字符 串)、List(列表)、Tuple(元组)、Sets(集合)、Dict...

23010
来自专栏十月梦想

Map数据结构以及方法和数据遍历

    前面说过Set和Map是ES6中的新的数据结构(不是数据类型是存储数据的集合结构),上面说过,Set类似与数据的形式而这个类似与object(对象),看...

3073
来自专栏郭耀华‘s Blog

剑指offer第五天

28.数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2...

2755
来自专栏微信公众号:Java团长

Java 类集框架(Set, List, Map)的使用

Set 接口和 List 接口都是 Collection 的子接口,因此我们先看看Collection 接口中有什么方法:

1182

扫码关注云+社区

领取腾讯云代金券