ArrayList类

ArrayList基本概念

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。我们可以叫做集合。
ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。
ArrayList类位于java.util 包,格式是:
ArrayList< E> objectName =new ArrayList<>();  // 初始化
< E>:被称作泛型,泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。那么当需要使用基本数据类型时,可以使用他们的包装类。

import java.util.ArrayList;
/*数组长度不能发生改变
ArrayList集合长度可以随时发生改变
对于ArrayList后面会跟着一个<E>,叫做泛型,它代表了这个ArrayList中保存的全是E类型的数据。
泛型其中只能包含引用类型,不能是基本类型。*/
public class Demo02ArrayList {
    public static void main(String[] args) {
        //从JDK1.7开始,右侧<>中可以不用写数据类型
        ArrayList<String> list = new ArrayList<>();
        //ArrayList类,可以直接输出结果,不会返回地址值。
        System.out.println(list);//[]
        //要想往集合中加值,使用add方法
        list.add("你好");
        System.out.println(list);//[你好]
        list.add("嗯嗯");
        list.add("哈哈");
        //当存入的数据变得多了,就会用逗号隔开
        System.out.println(list);//[你好, 嗯嗯, 哈哈]
    }
}
ArrayList常用方法

ArrayList当中常用的方法有:

  • public boolean add(E e); 向集合中添加元素,参数的类型和泛型一致。返回值代表添加是否成功。
  • public E get(int index); 从集合中获取元素,参数是索引编号,返回值是索引对应的元素
  • public E remove(int index);从集合中删除元素,参数是索引编号,返回值是索引对应的元素
  • public int size();获取集合的尺寸长度,返回值是集合中包含的元素个数。常用于对集合进行遍历。
public class Demo03ArrayListMethod {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        boolean name = list.add("哈哈");
        System.out.println(name);
        boolean name1 = list.add("嘿嘿");
        boolean name2 = list.add("你好");
        String num = list.get(0);
        //获取某位置的元素
        String num1 = list.get(1);
        System.out.println("索引在1号位置的是:" + num1);
        String num2 = list.get(2);
        //删除集合中的元素
        String rename = list.remove(1);
        System.out.println("去掉的人是:" + rename);
        //集合长度
        int size = list.size();
        System.out.println("集合的长度是:" + size);
        //对集合进行遍历
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}
ArrayList中基本类型的包装类

因为ArrayList中泛型不支持基本数据类型,所以我们不能直接往ArrayList中写入基本数据类型
但是可以写入所有基本数据类型对应的包装类,包装类指的就是引用类型格式。
从JDK1.5开始,支持自动装箱,自动拆箱。
自动装箱: 基本数据类型 --> 引用数据类型
自动拆箱: 引用数据类型 --> 基本数据类型

基本数据类型

对应包装类

byte

Byte

short

Short

int

Integer

long

Long

float

Float

double

Double

char

Character

boolean

Boolean

练习

存储随机数字

package demo.demo04;
import java.util.ArrayList;
import java.util.Random;
/*题目:生成6个1~33之间的随机整数,添加到集合,并进行遍历集合。
* 思路:
* 1.有随机数和集合,先new
* 2.生成的是1~33之间的随机数,就可以设为nextInt(32)+1;
* 3.用循环6次产生随机数,并add进集合
* 4.通过for循环遍历集合,输出集合的每个数,size,get*/
public class Demo05ArrayListRandom {
    public static void main(String[] args) {
        Random ran = new Random();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0 ; i < 6 ; i++) {
            int num = ran.nextInt(32) + 1;
            list.add(num);
        }
        System.out.println("集合的长度是:" + list.size());
        //遍历集合
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

存储自定义对象

package demo.demo04;
import java.util.ArrayList;
/*题目:自定义4个学生对象,将他们加入进集合,遍历。集合存储自定义对象
* 思路:
* 1.创建四个学生对象,需要先定义一个学生类,四个部分,private,无参构造,全参构造,get,set
* 2.创建ArrayList对象,<>泛型写Student类型
* 3.add进list
* 4.遍历*/
public class Demo06ArrayListStudent {
    public static void main(String[] args) {
        Student stu0 = new Student("小王",15);
        Student stu1 = new Student("小红",15);
        Student stu2 = new Student("小明",15);
        Student stu3 = new Student("小李",15);
        ArrayList<Student> list = new ArrayList<>();
        list.add(stu0);
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println("姓名:" + stu.getName() +"年龄:" + stu.getAge());
        }
    }
}