java基础---15. ArrayList类

1 引言

  • 创建一个Person类
public class Person {
    private String name;
    private int num;

    public Person() {
    }

    public Person(String name, int num) {
        this.name = name;
        this.num = num;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
}
  • 使用
/*
定义一个数组,用来存储3个Person对象
 */
public class Demo01Array {
    public static void main(String[] args) {
        //首先创建一个长度为3的数组用来存放Person类型对象
        Person[] array = new Person[3];
        System.out.println(array[0]);//null
        //数组存放的是引用类型,默认值是null

        Person one = new Person("迪丽热巴", 18);
        Person two = new Person("古力娜扎", 28);
        Person three = new Person("马儿咋哈", 38);

        //将对象的地址值赋值到数组中
        array[0] = one;
        array[1] = two;
        array[2] = three;

        //打印地址值
        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);

        System.out.println(array[1].getName());//古力娜扎
    }
}

总结:虽然数组可以存放对象,但是数组有一个缺点:一旦创建,程序运行期间长度不可以发生改变

2 ArrayList集合概述和基本使用方法

import java.util.ArrayList;

/*
数组的长度不可以发生改变,但是ArrayList集合的长度是可以随意变化的

对于ArrayList来说,有一个尖括号<E>代表泛型。
泛型:也就是装在集合当中的所有元素全都是统一的什么类型。
注意:泛型只能是引用类型,不能是基本类型
 */
public class Demo02ArrayList {
    public static void main(String[] args) {
        //创建了一个ArrayList集合,集合的名称是list,里面装的全是String字符串类型的数据
        //备注:从JDK 1.7+开始,右侧的尖括号内部的内容可以不写,但是<>本身还是要写的。
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //向集合当中添加一些数据,需要用到add方法。
        list.add("赵丽颖");
        System.out.println(list);//[赵丽颖]

        list.add("迪丽热巴");
        list.add("古力娜扎");
        System.out.println(list);//[赵丽颖, 迪丽热巴, 古力娜扎]
    }
}

3 ArrayList集合中的常用方法

import java.util.ArrayList;

/*
ArrayList当中的常用方法有:

public boolean add(E e):向集合当中添加元素,参数的类型和泛型一致。返回值代表添加是否成功
备注:对于ArrayList集合来说,add添加动作一定是成功的,所以返回值可用可不用。
但是对于今后学习的其他集合,add添加动作不一定成功

public E get(int index): 从集合当中获取元素,参数是索引号,返回值是对应位置元素(索引号从0开始)

public E remove(int index):从集合当中删除元素,参数是索引编号,返回值是被删除掉的元素

public int size():获取集合尺寸长度,返回值是集合中包含的元素个数
 */
public class Demo03ArrayListMethod {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //public boolean add(E e)
        boolean success = list.add("柳岩");
        System.out.println(list);//[柳岩]
        System.out.println("添加动作是否成功" + success);//添加动作是否成功true
        list.add("赵又廷");
        list.add("高圆圆");
        System.out.println(list);//[柳岩, 赵又廷, 高圆圆]

        //public E get(int index)
        String name = list.get(2);
        System.out.println(name);//高圆圆

        //public E remove(int index)
        String whoRemoved = list.remove(0);
        System.out.println(whoRemoved);//柳岩
        System.out.println(list);//[赵又廷, 高圆圆]

        //public int size()
        int size = list.size();
        System.out.println(size);//2
    }
}

4 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集合存储基本数据类型

import java.util.ArrayList;

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

从JDK 1.5+开始,支持自动装箱、自动拆箱。
自动装箱: 基本类型--->包装类型
自动拆箱: 包装类型--->基本类型
 */
public class Demo05ArrayListBasic {
    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);//注意:左边依然可用用int接收
        System.out.println(num);//200
    }
}

6 ArrayList集合练习1

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

/*
生成6个1~33之间的随机数,并遍历集合
 */
public class Demo01ArrayListRandom {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 6; i++) {
            int num = r.nextInt(33) + 1;
            list.add(num);
        }
        //遍历集合
        for(int i = 0; i < list.size(); i++) {
            int num = list.get(i);
            System.out.println(num);
        }
    }
}

7 ArrayList集合练习2

/*
题目要求:定义4个学生对象,添加到集合,并遍历集合
 */
public class Demo02ArrayListStudent {
    public static void main(String[] args) {
        ArrayList<Student> list = new ArrayList<>();//泛型是<Student>

        Student one = new Student("洪七公", 20);
        Student two = new Student("欧阳锋", 21);
        Student three = new Student("黄药师", 22);
        Student four = new Student("段智兴", 23);

        list.add(one);
        list.add(two);
        list.add(three);
        list.add(four);

        //遍历集合
        for(int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu);//地址
            System.out.println("姓名:" + stu.getName() + "; 年龄:" + stu.getAge());
        }

    }
}

8 ArrayList集合练习3

集合也是可以作为方法的参数的

import java.util.ArrayList;

/*
题目:定义指定格式打印集合的方法(ArrayList类型作为参数),使用{}扩起集合,使用@分割每个元素。
格式参照{元素@元素@元素}
举例:
原先是
System.out.println(list);   [10, 20, 30]
现在要求自己写一个函数:printArrayList(list); 打印输出的格式是{10@20@30}
 */
public class Demo03ArrayListPrint {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("小可爱");
        list.add("中可爱");
        list.add("大可爱");
        list.add("超大可爱");
        
        System.out.println(list);//[小可爱, 中可爱, 大可爱, 超大可爱]

        //调用新方法
        printArrayList(list);//{小可爱@中可爱@大可爱@超大可爱}

    }
    /*
        定义新方法:
        返回值类型:void
        方法名称: printArrayList
        参数列表:ArrayList
         */
    public static void printArrayList(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)+"@");
            }
        }
    }

}

9 ArrayList集合练习4

集合可以作为返回值

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

/*
题目:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合中
 */
public class Demo04ArrayListReturn {
    public static void main(String[] args) {
        //1. 生成一个随机的构成的大集合
        ArrayList<Integer> listA = new ArrayList<>();
        Random r = new Random();
        for(int i = 0; i < 20; i++) {
            int num = r.nextInt(100)+1;
            listA.add(num);
        }
        System.out.println(listA);
        ArrayList<Integer> listB =  getEvenList(listA);
        System.out.println(listB);
    }

    //2. 在大集合中筛选出偶数集合
     public static ArrayList<Integer> getEvenList(ArrayList<Integer> list){
        ArrayList<Integer> evenList = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
//            int num = list.get(i);
            if (list.get(i) % 2 == 0) {
                evenList.add(list.get(i));
            }
        }
        return evenList;
     }
}
原文地址:https://www.cnblogs.com/deer-cen/p/12211042.html