【Java课程心得】Java中的ArrayList集合

前言

到目前为止,我们想存储多个数据,可以使用数组。而数组的长度是固定的,无法适应数据变化的需求。
      为了解决这个问题,Java提供了另一个容器 java.util.ArrayList集合类,让我们可以更便捷的存储和操作数据。
      ArrayList也是JDK提供的类,我们直接使用


一、数组回顾

数组格式:
         动态初始化: 数据类型[] 数组名 = new 数据类型[长度]; int[] arr = new int[长度];
         静态初始化: 数据类型[] 数组名 = new 数据类型[] {元素1, 元素2, 元素3}

   数组访问:
         获取数据: arr[索引]
         修改数据: arr[索引] = 新的值;
         获取长度: arr.length

举例:
      int[] arr = new int[5];
      int[] arr = new int[] {11, 22, 33};
      String[] arr = new String[4];

数组的特点:
      1.数组长度固定
      2.数组即可以存储基本数据类型,也可以存储引用数据类型


二、ArrayList的简介

查API
   1.看包
         java.util

   2.看类的说明
         ArrayList也是一个容器可以存储多个数据,并且大小可以变化.
         以后看到需求中需要数据添加或删除.建议使用ArrayList
   3.看构造方法 ArrayList() 创建一个ArrayList默认容量为10

   4.看成员方法
         boolean add(Xxx x): 添加一个数据到ArrayList末尾

创建ArrayList的格式(重要):
         类名 对象名 = new 类名();
         ArrayList list = new ArrayList();
   创建一个ArrayList对象,存储的数据类型是String

小结:
    数组的特点: 是一个容器可以存储多个数据
         1.长度固定
         2.可以存储基本数据类型和引用数据类型

   ArrayList集合: 是一个容器可以存储多个数据
      1.ArrayList长度可以变化

代码:

public static void main(String[] args) {
    
    
        String[] arr = new String[4];
        arr[0] = "刘德华";
        arr[1] = "张学友";
        arr[2] = "郭富城";
        arr[3] = "黎明";

        // 创建一个ArrayList来存储String类型数据
        ArrayList<String> list = new ArrayList<String>();

        // 添加数据
        // boolean add(Xxx x): 添加一个数据到ArrayList末尾
        list.add("王宝强");
        list.add("陈羽凡");
        list.add("贾乃亮");
        list.add("谢霆锋");

        System.out.println("list = " + list); // [王宝强, 陈羽凡, 贾乃亮, 谢霆锋]
        // ArrayList内部做了特殊处理让我们打印的时候打印的是内容.(toString我们后面会介绍)
    }

三.ArrayList常用方法;

遇到要保存多个数据,要添加,要删除.就使用ArrayList(常用)

增 查 删 改


      boolean add​(E e) 将指定的元素追加到此列表的末尾。
      void add​(int index, E element) 在此列表中的指定位置插入指定的元素。


      E get​(int index) 返回指定位置的元素。


      E remove​(int index) 删除该列表中指定位置的元素。
      boolean remove​(Object o) 从列表中删除指定元素的第一个出现(如果存在)。

      E set​(int index, E element) 用指定的元素替换此列表中指定位置的元素。

获取元素的个数:
      int size​() 返回此列表中的元素数。

public static void main(String[] args) {
    
    
        // JDK7以后右边<>里面可以省略
        ArrayList<String> list = new ArrayList<>();

        // 增
        // boolean add​(E e) 将指定的元素追加到此列表的末尾。
        list.add("马蓉");
        list.add("白百何");
        list.add("李小璐");
        //                                          0      1        2
        System.out.println("list = " + list); // [马蓉, 白百何, 李小璐]
        // void add​(int index, E element) 在此列表中的指定位置插入指定的元素。
        list.add(1, "张柏芝");
        //                                          0      1         2       3
        System.out.println("list = " + list); // [马蓉, 张柏芝, 白百何, 李小璐]

        // 查: E get​(int index) 返回指定位置的元素。
        String s1 = list.get(1);
        System.out.println("get: " + s1); // get: 张柏芝

        // 删
        // 1.E remove​(int index) 删除该列表中指定位置的元素
        System.out.println("remove1: " + list.remove(0)); // remove1: 马蓉
        System.out.println("list = " + list); // list = [张柏芝, 白百何, 李小璐]

        // 2.boolean remove​(Object o) 根据内容删除第一个出现的数据
        list.add("白百何");
        System.out.println("list = " + list); // list = [张柏芝, 白百何, 李小璐, 白百何]
        list.remove("白百何");             //           0        1       2
        System.out.println("list = " + list); // list = [张柏芝, 李小璐, 白百何]

        // 改 E set​(int index, E element) 修改指定索引位置的数据
        String set = list.set(1, "凤姐");
        System.out.println("set = " + set); // set = 李小璐 返回被修改的数据
        System.out.println("list = " + list); // list = [张柏芝, 凤姐, 白百何]

        // 获取元素的个数: int size​() 返回此列表中的元素数。
        System.out.println(list.size()); // 3
        list.add("如花");
        System.out.println(list.size()); // 4
    }

四.ArrayList存储字符串并遍历

import java.util.ArrayList;
import java.util.Collections;

案例需求
         创建一个存储字符串的ArrayList集合,存储3个字符串元素,使用程序实现在控制台遍历该集合

小结:

ArrayList遍历固定格式
    for (int i = 0; i < list.size(); i++) { // i = 0, 1, 2
        System.out.println(list.get(i));
    }

代码:

public static void main(String[] args) {
    
    
        // 1.创建ArrayList集合
        ArrayList<String> list = new ArrayList<String>();

        // 2.往ArrayList中添加3个字符串数据
        list.add("迪丽热巴"); // 0
        list.add("古力娜扎"); // 1
        list.add("马尔扎哈"); // 2

        // 3.遍历ArrayList集合获取每个数据,进行打印
       /*
        System.out.println(list.get(0)); // 迪丽热巴
        System.out.println(list.get(1)); // 古力娜扎
        System.out.println(list.get(2)); // 马尔扎哈*/
        // 以上代码是重复代码,只有索引在变化.改成循环.次数确定使用for循环遍历
        for (int i = 0; i < list.size(); i++) {
    
     // i = 0, 1, 2
            System.out.println(list.get(i));
        }

        // list.fori: 神操作
        for (int i = 0; i < list.size(); i++) {
    
    
            System.out.println(list.get(i));
        }
    }

五.ArrayList存储学生对象并遍历

需求:
      创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

分析:
      1.定义学生类
      2.创建3个学生对象
      3.创建ArrayList集合,用于存储学生数据
      4.添加学生到ArrayList集合中
      5.遍历ArrayList集合.得到每个学生

小结:
      1.对象new出来在堆中. Studetn s1保存的是对象的地址
      2.stus.add(s1); 将对象添加到集合中,实际添加的是对象的地址
      3.ArrayList取出来也是对象的地址,使用Student类型的变量保存

代码:

1.自行定义学生类

2

public static void main(String[] args) {
    
    
        // 2.创建3个学生对象
        Student s1 = new Student("马云", 56); // Student s1 = 7a5d012c;
        Student s2 = new Student("马化腾", 45); // Student s2 = 3fb6a447;
        Student s3 = new Student("刘强东", 46); // Student s3 = 79b4d0f;
        System.out.println("s1 = " + s1); // 7a5d012c;
        System.out.println("s2 = " + s2); // 3fb6a447;
        System.out.println("s3 = " + s3); // 79b4d0f;

        // 3.创建ArrayList集合,用于存储学生数据
        ArrayList<Student> stus = new ArrayList<>();

        // 4.添加学生到ArrayList集合中
        stus.add(s1); // 加进去的是什么? 7a5d012c
        stus.add(s2); // 3fb6a447
        stus.add(s3); // 79b4d0f
        //
        // System.out.println("stus = " + stus);

        // 5.遍历ArrayList集合.得到每个学生
        for (int i = 0; i < stus.size(); i++) {
    
    
            //  System.out.println(stus.get(i)); // 7a5d012c
            Student s = stus.get(i); // i = 0 (7a5d012c)  i = 1 (3fb6a447) i = 2 (79b4d0f)
            System.out.println(s.getName() + "----" + s.getAge());
        }
    }

六.demo05ArrayList存储学生对象并遍历2

需求:
      创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合
      学生的姓名和年龄来自于键盘录入

分析:
      1.定义学生类
      2.创建ArrayList集合,用于存储学生数据
      3.定义一个方法让用户输入数据,并创建学生添加到集合中
      4.遍历ArrayList集合.得到每个学生

代码:

 public static void main(String[] args) {
    
    
        // 2.创建ArrayList集合,用于存储学生数据
        ArrayList<Student> list = new ArrayList<>();

        // 调用方法添加一个学生
        addStudent(list);
        addStudent(list);
        addStudent(list);

        // 4.遍历ArrayList集合.得到每个学生
        for (int i = 0; i < list.size(); i++) {
    
    
            Student stu = list.get(i);
            System.out.println(stu.getName() + "--" + stu.getAge());
        }
    }

    // 3.定义一个方法让用户输入数据,并创建学生添加到集合中
    // 明确返回值类型: 不需要返回值: void
    // 明确参数列表: 创建的学生往哪个集合中添加: 参数列表: ArrayList集合
    public static void addStudent(ArrayList<Student> stus) {
    
    
        // stus = list,就是外部传入的集合
        // 让用户输入学生的姓名和年龄
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入学生的姓名:");
        String name = sc.next();
        System.out.println("请输入学生的年龄:");
        int age = sc.nextInt();

        // 创建学生对象
        Student s = new Student(name, age);

        // 将学生对象添加到集合中
        stus.add(s);
    }

七.demo06ArrayList存储基本数据类型

ArrayList只能存储引用数据类型.不能存储基本数据类型.

Java为每种基本数据类型都搞了一个对应的引用数据类型
      基本数据类型          对应的引用数据类型(包装类)
      byte                          Byte
      short                         Short
      int                             Integer *****
      long                          Long
      float                          Float
      double                      Double
      char                          Character *****
      boolean                    Boolean

我们ArrayList中要保存基本数据类型,需要写对应的引用数据类型

小结:
      ArrayList不能存储基本数据类型,只能存储引用数据类型.如果要存储基本数据类型的数据.需要写包装类

 public static void main(String[] args) {
    
    
        ArrayList<Integer> list = new ArrayList<>();
        list.add(110); // 0
        list.add(119); // 1
        list.add(120); // 2
        list.add(122); // 3

        list.remove(1);

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

        System.out.println("sum = " + sum);
    }

猜你喜欢

转载自blog.csdn.net/maikotom/article/details/113804151