ArrayList的简单用法


一、什么是ArrayList类

java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

二、使用步骤

1.查看类

java.util.ArrayList <E> :该类需要 import导入使后使用。
<E>表示一种指定的数据类型,叫做泛型。 E ,取自Element(元素)的首字母。在出现 E 的地方,我们使用一种***引用数据类型***将其替换即可,表示我们将存储哪种引用类型的元素。代码如下:

ArrayList<String>ArrayList<Student>

ArrayList的基本格式为:

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

这里举个ArrayList的小例子,后面再对Arraylist的用法进行讲解。

import java.util.ArrayList;

public class demo02ArrayList {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("add");
        list.add("ads");

        System.out.println(list);
    }
}

运行结果:
在这里插入图片描述

2.常用的方法

ArrayList有几下几种常用方法:

/*
ArrayList的常用方法:
    public boolean add(E e): 向集合中添加元素,参数的类型和泛型一致
    备注:对于ArrayList集合来说,add动作一定是成功的,所以返回值不可用
    但是对于其他集合来说,add的添加动作不一定成功。

    public E get(int index): 从集合中获取元素,参数书索引编号,返回值是对应位置的元素
    public E remove(int index): 从集合中删除元素,参数是索引编号,返回值就是被删除的元素
    public int size(): 获取集合尺寸的长度,返回值是集合中包含元素的个数。
 */

这些都是最基本最简单的方法,具体操作代码如下:

import java.util.ArrayList;

public class Demo03ArrayListMethod {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);

        boolean success = list.add("柳岩");
        System.out.println(list);
        System.out.println("添加动作是否成功:" + success);


        list.add("迪丽热巴");
        list.add("古力娜扎");
        list.add("马尔扎哈");
        list.add("上官婉儿");
        System.out.println(list);


        //从集合中获取元素:get。索引值从0开始
        String name = list.get(2);
        System.out.println("第2号索引值位置的元素:" + name);


        //从集合中删除元素:remove。索引值从0开始
        String whoRemoved = list.remove(3);
        System.out.println("被删除的人是:" + whoRemoved);
        System.out.println(list);


        //获取集合的长度尺寸:size
        int size = list.size();
        System.out.println("集合的长度为:" + size);
    }

}

3.如何存储数据类型

上面举的例子是对String类型数据的存储,如果存储int型,double型的数据,是不是可以写成ArrayList<int> or ArrayList<double>呢?我们在IDEA上试试效果,显然,这样是行不通的。
在这里插入图片描述

对于ArrayList对象,它是不能存储基本类型的,只能存储引用类型的数据,类似于、、不能写,但是这些数据类型对应的包装类型是可以的。所以,想要存储基本数据类型,需要将<>中的数据类型转换成对应的包装类型。转换方法如下:


如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的”包装类“.
基本类型 包装类(引用类型,包装类位于java.lang包下)
byte    Byte
short   Short
int     Integer
long    Long
float   Float
double  Double
char    Character
boolean Boolean

我们发现,只有 Integer 和 Character 需要特殊记忆,其他基本类型只是首字母大写即可。对此,举个int类型数据的存储例子,代码如下:

import java.util.ArrayList;
public class Demo05ArrayListBasic {
    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();

        //错误写法,泛型只能是引用类型,不能是基本类型。
        //ArrayList<int> listB = NewArrayList<>();

        ArrayList<Integer> listC = new ArrayList<>();
        listC.add(100);
        listC.add(200);
        listC.add(300);
        System.out.println(listC);
    }
}

我们可以看到,int类型的数据已经被存到集合当中。
在这里插入图片描述

4.ArrayList的遍历

存储完数据以后,当然是取数据。我们如何提取ArrayList里的数据吗?和数组的方式一样吗?
在这里插入图片描述
当我们使用遍历数组的方式时,代码报错了。上面我们提到了几种ArrayList的常用方法,其中public E get(int index)就是提取集合中元素的方法,所以我们将list[i]改成list.get(i),便能遍历集合中的元素,代码如下:

import java.util.ArrayList;

public class Demo04ArrayListEach {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        list.add("迪丽热巴");
        list.add("古力娜扎");
        list.add("马尔扎哈");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

在这里插入图片描述

5.ArrayList的练习

学习完ArrayList的基本用法以后,做几个练习熟悉熟悉。
题目和代码我会贴在下面。

5.1、生成6个1~33之间的随机数,添加到集合,并遍历集合.

做题之前,我们先整理一下思路:

  1. 需要存储6个数字,创建一个集合
  2. 产生随机数,需要用到Random
  3. 用循环六次,来产生6个随机数:for循环
  4. 循环内调用.r.nextInt(int n), 参数33, 0-32,整体+1才是1~33
  5. 把数字添加到集合中
  6. 遍历集合,for,get,size

代码如下:

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

public class Demo01ArrayListRandom {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 6; i++) {
            int num = random.nextInt(33) + 1;
            list.add(num);
        }

        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

    }
    
}

5.2、自定义4个学生对象,添加到集合,并遍历

思路:

  1. 自定义Student学生类,四个部分:有参,无参,get,set
  2. 创建一个集合,来存储学生对象。泛型:
  3. 根据类创建四个学生对象
  4. 将四个学生对象,添加到集合当中
  5. 遍历集合
    代码如下:
import java.util.ArrayList;

public class Demo02ArrayListStudent {
    public static void main(String[] args) {
        ArrayList<Student> students = new ArrayList<>();
        
        Student student_one = new Student("老王", 25);
        Student student_two = new Student("老张", 28);
        Student student_three = new Student("翠花", 21);
        Student student_four = new Student("翠芬", 18);
        
        students.add(student_one);
        students.add(student_two);
        students.add(student_three);
        students.add(student_four);


        //遍历集合,获取集合中学生信息
        for (int i = 0; i < students.size(); i++) {
            Student stu = students.get(i);
            System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge());
        } 
    }
}

5.3、定义以指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分隔每个元素。格式参照 {元素@元素@元素}。

import java.util.ArrayList;

public class Demo03ArrayListPrint {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();

        list.add("老王");
        list.add("老张");
        list.add("老李");

        ArrayPrint(list);
    }

    public static void ArrayPrint(ArrayList<String> list){
        System.out.print("{");

        for (int i = 0; i < list.size(); i++) {
            if (i < list.size() - 1){
                System.out.print(list.get(i) + "@");
            }else {
                System.out.print(list.get(i));
            }

        }

        System.out.print("}");
    }

}

5.4、定义获取所有偶数元素集合的方法(ArrayList类型作为返回值)

import java.util.ArrayList;

import java.util.Random;

/*
用一个大集合存入20个随机数,然后将集合中的偶数存入小集合中
要求用自定义的方法来实现
 */
public class Demo04ArrayListReturn {

    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < 20; i++) {
            list.add(random.nextInt(90));
        }
        for (int i = 0; i < getArrayList(list).size(); i++) {
            System.out.println(getArrayList(list).get(i));
        }
    }

    public static ArrayList<Integer> getArrayList(ArrayList<Integer> list){
        ArrayList<Integer> listB = new ArrayList<>();

        for (int i = 0; i < list.size(); i++) {
            Integer num = list.get(i);
            if(num % 2 == 0){
                listB.add(num);
            }
        }

        return listB;
    }
}


版权声明:本文为weixin_43761593原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。