Java之ArrayList类(集合)

Posted wurengen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java之ArrayList类(集合)相关的知识,希望对你有一定的参考价值。

集合的由来

我们想存储多个数据,选择的容器可以是数组。而数组的长度是固定的,无法适应数据变化的需求。为了解决这个问题,Java提供了另一个容器 java.util.ArrayList 集合类,让我们可以更便捷的存储和操作对象数据。数组的长度不可以发生改变。但是ArrayList集合的长度是可以随意变化的。

ArrayList类概述

java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。对于ArrayList来说,有一个尖括号<E>代表泛型。泛型:也就是装在集合当中的所有元素,全都是统一的什么类型。注意:泛型只能是引用类型,不能是基本类型。

ArrayList使用步骤

查看类

  • java.util.ArrayList <E> :该类需要 import导入使后使用。<E> ,表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种引用数据类型将其替换即可,表示我们将存储哪种引用类型的元素。
查看构造方法
  • public ArrayList() :构造一个内容为空的集合。
基本格式:
 //创建一个泛型为String的ArrayList集合
ArrayList<String> arrayList = new ArrayList<String>();
在JDK 7后,右侧泛型的尖括号之内可以留空,但是<>仍然要写。
简化格式:
 //创建一个泛型为String的ArrayList集合
ArrayList<String> arrayList = new ArrayList<>();
查看常用的成员方法
  • public boolean add(E e) : 将指定的元素添加到此集合的尾部。参数 E e ,在构造ArrayList对象时, <E> 指定了什么数据类型,那么 add(E e) 方法中,只能添加什么数据类型的对象。对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。但是对于其他集合(今后学习)来说,add添加动作不一定成功。
  • public E get(int index):从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素。
  • public E remove(int index):从集合当中删除元素,参数是索引编号,返回值就是被删除掉的元素。
  • public int size():获取集合的尺寸长度,返回值是集合中包含的元素个数。
代码举例
package MyCode;

import java.util.ArrayList;

public class ArrayListMethod {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> list = new ArrayList<String>();
        //添加元素
        list.add("hello");
        list.add("world");
        list.add("I");
        list.add("love");
        list.add("java");
        //public E get(int index):返回指定索引处的元素
        System.out.println("get的元素:" + list.get(3));
        //public int size():返回集合中的元素的个数
        System.out.println("集合中元素的个数:" + list.size());
        //public E remove(int index):删除指定索引处的元素,返回被删除的元素
        System.out.println("删除的指定index元素:" + list.remove(0));
        //遍历输出
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

代码执行后的结果

技术图片

如何存储基本数据类型

ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 <int> 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:
技术图片

tips:

我们发现,只有 Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写即可。

从JDK 1.5+开始,支持自动装箱、自动拆箱。

  • 自动装箱:基本类型 --> 包装类型
  • 自动拆箱:包装类型 --> 基本类型
package MyCode;
import java.util.ArrayList;

/*
如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。

 */
public class MyArrayListBasic {

    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();
        // 错误写法!泛型只能是引用类型,不能是基本类型
//        ArrayList<int> listB = new ArrayList<>();
        //泛型:只能是包装类
        ArrayList<Integer> listC = new ArrayList<>();
        //自动装箱
        listC.add(100);
        listC.add(200);
        System.out.println(listC); // [100, 200]
        //自动拆箱
        int num = listC.get(1);
        System.out.println("第1号元素是:" + num);
    }

}

代码执行后的结果

技术图片

ArrayList练习 

用一个大集合存入1到1000之间的20个随机数字,,然后筛选其中的偶数元素,放到小集合当中。要求使用自定义的方法来实现筛选。

分析:

  1. 需要创建一个大集合,用来存储int数字:<Integer>
  2. 随机数字就用Random nextInt
  3. 循环20次,把随机数字放入大集合:for循环、add方法
  4. 定义一个方法,用来进行筛选。筛选:根据大集合,筛选符合要求的元素,得到小集合。方法三要素:返回值类型,方法名称,参数列表。
  5. 判断(if)是偶数:num % 2 == 0
  6. 如果是偶数,就放到小集合当中,否则不放。

代码实现

package demo05;

import java.util.ArrayList;
import java.util.Random;

public class MyArrayList {
    public static void main(String[] args) {
        // 创建Random 对象
        Random random = new Random();
        // 创建ArrayList 对象
        ArrayList<Integer> list = new ArrayList<>();
        // 添加随机数到集合
        for (int i = 0; i < 20; i++) {
            int r = random.nextInt(1000) + 1;
            list.add(r);
        }
        // 调用偶数集合的方法
        ArrayList<Integer> arrayList = getArrayList(list);
        System.out.println(arrayList);
    }

    public static ArrayList<Integer> getArrayList(ArrayList<Integer> list) {
        // 创建小集合,来保存偶数
        ArrayList<Integer> smallList = new ArrayList<>();
        // 遍历list
        for (int i = 0; i < list.size(); i++) {
            // 获取元素
            Integer num = list.get(i);
            // 判断为偶数,添加到小集合中
            if (num % 2 == 0) {
                smallList.add(num);
            }
        }
        // 返回小集合
        return smallList;
    }
}

代码执行后的结果

技术图片

注意

java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。 许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡

 

以上是关于Java之ArrayList类(集合)的主要内容,如果未能解决你的问题,请参考以下文章

java之集合ArrayList实例

java之集合ArrayList

JAVA容器之ArrayList集合详解

java之List_ArrayList集合使用(去重复)

java之List_ArrayList集合使用(去重复)

Java集合类之ArrayList