天天看點

1.14 ArrayList集合1.14 ArrayList集合

1.14 ArrayList集合

1.ArrayList

1.1ArrayList類概述【了解】

什麼是集合

提供一種存儲空間可變的存儲模型,存儲的資料容量可以發生改變

ArrayList集合的特點

底層是數組實作的,長度可以變化

泛型的使用

用于限制集合中存儲元素的資料類型

1.2ArrayList類常用方法【應用】

1.2.1構造方法

public ArrayList() 創造一個空的集合對象

1.2.2成員方法

方法名 說明
public boolean remove(Object o) 删除指定的元素,傳回删除是否成功
public E remove(Object o) 删除指定索引處的元素,傳回被删除的元素
public E set(int index,E element) 修改指定索引處的元素,傳回被修改的元素
public E get(int index) 傳回指定索引處的元素
public int size() 傳回集合中的元素的個數
public boolean add(E e) 将指定的元素追加到此集合的末尾
public void add(int index,E element) 在此集合中的指定位置插入指定的元素

1.2.3示例代碼

package demo07.demo02;

import java.util.ArrayList;

public class ArrayListDemo01 {
    public static void main(String[] args) {
        // 建立集合
        ArrayList<String> array = new ArrayList<>();

        // 添加元素
        array.add("hello");
        array.add("word");
        array.add("123");
        array.add("你好");

        // | public boolean remove(Object o)      | 删除指定的元素,傳回删除是否成功       |
        boolean b1 = array.remove("你好");
        System.out.println(b1);
        System.out.println("------------------");

        // | public E remove(Object o)            | 删除指定索引處的元素,傳回被删除的元素 |
        String re = array.remove(0);
        System.out.println(re);
        System.out.println("------------------");

        // | public E set(int index,E element)    | 修改指定索引處的元素,傳回被修改的元素 |
        String hi = array.set(0, "嗨");
        System.out.println(hi);
        System.out.println("------------------");

        // | public E get(int index)    | 傳回指定索引處的元素                   |
        String s = array.get(0);
        System.out.println(s);
        System.out.println("------------------");


        // | public int size()                    | 傳回集合中的元素的個數                 |
        int size = array.size();
        System.out.println(size);
        System.out.println("------------------");

        // | public boolean add(E e)              | 将指定的元素追加到此集合的末尾         |
        boolean b2 = array.add("Java");
        System.out.println(b2);
        System.out.println("------------------");

        // | public void add(int index,E element) | 在此集合中的指定位置插入指定的元素     |
        array.add(3, "HELLO");
        System.out.println(array.get(3));
        System.out.println("------------------");

        for (String s1 : array) {
            System.out.print(s1 + "  ");
        }

    }
}
           

1.3ArrayList存儲字元串并周遊【應用】

1.3.1案例需求

建立一個存儲字元串的集合,存儲3個字元串元素,使用程式實作在控制台周遊該集合

1.3.2代碼實作

package demo07.demo02;

import java.util.ArrayList;

public class ArrayListDemo02 {
    public static void main(String[] args) {
        // 建立集合
        ArrayList<String> array = new ArrayList<>();

        // 添加元素
        array.add("hello");
        array.add("word");
        array.add("你好");
        
        // 方法一 普通for循環
        for (int i = 0; i < array.size(); i++) {
            System.out.print(array.get(i) + "  ");
        }
        System.out.println("------");
        // 方法二 增強for循環
        for (String s : array) {
            System.out.print(s + "  ");
        }

    }
}
           

1.4ArrayList存儲學生對象并周遊【應用】

1.4.1案例需求

建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合

package demo07.demo03;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
           
package demo07.demo03;

import java.util.ArrayList;

/*
### 1.4ArrayList存儲學生對象并周遊【應用】
#### 1.4.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
 */
public class StudentArrayList {
    public static void main(String[] args) {
        // 建立集合
        ArrayList<Student> list = new ArrayList<>();

        // 添加資料
        // 創造student對象
        Student s1 = new Student("熊大", 20);
        Student s2 = new Student("熊二", 19);
        Student s3 = new Student("光頭強", 30);

        list.add(s1);
        list.add(s2);
        list.add(s3);

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

    }
}
           

1.5ArrayList存儲學生對象并周遊更新版【應用】

1.5.1案例需求

建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合

學生的姓名和年齡來自于鍵盤錄入

1.5.2代碼實作

第一種:
package demo07.demo03;

import java.util.ArrayList;
import java.util.Scanner;

/*
### 1.5ArrayList存儲學生對象并周遊更新版【應用】
#### 1.5.1案例需求
建立一個存儲學生對象的集合,存儲3個學生對象,使用程式實作在控制台周遊該集合
學生的姓名和年齡來自于鍵盤錄入
 */
public class StudentArrayList01 {
    public static void main(String[] args) {
        // 建立集合
        ArrayList<Student> list = new ArrayList<>();

        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < 3; i++) {
            System.out.println("請輸入String姓名");
            String name = sc.next();
            System.out.println("請輸入int年齡");
            int age = sc.nextInt();
            // 添加資料
            // 創造student對象
            Student s = new Student(name, age);
            list.add(s);
        }
        System.out.println("----------------");
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
    }
}
           
第二種 :抽取方法
/*
思路:
1:定義學生類,為了鍵盤錄入資料友善,把學生類中的成員變量都定義為String類型
2:建立集合對象
3:鍵盤錄入學生對象所需要的資料
4:建立學生對象,把鍵盤錄入的資料指派給學生對象的成員變量
5:往集合中添加學生對象
6:周遊集合,采用通用周遊格式實作
*/
public class ArrayListTest {
    public static void main(String[] args) {
//建立集合對象
        ArrayList<Student> array = new ArrayList<Student>();
//為了提高代碼的複用性,我們用方法來改程序式
        addStudent(array);
        addStudent(array);
        addStudent(array);
//周遊集合,采用通用周遊格式實作
        for (int i = 0; i < array.size(); i++) {
            Student s = array.get(i);
            System.out.println(s.getName() + "," + s.getAge());
        }
    }
    /*
    兩個明确:
    傳回值類型:void
    參數:ArrayList<Student> array
    */
    public static void addStudent(ArrayList<Student> array) {
//鍵盤錄入學生對象所需要的資料
        Scanner sc = new Scanner(System.in);
        System.out.println("請輸入學生姓名:");
        String name = sc.nextLine();
        System.out.println("請輸入學生年齡:");
        String age = sc.nextLine();
//建立學生對象,把鍵盤錄入的資料指派給學生對象的成員變量
        Student s = new Student();
        s.setName(name);
        s.setAge(age);
//往集合中添加學生對象
        array.add(s);
    }
}
           

1.5.3 ArrayList存儲基本資料類型

package com.itheima.demo06ArrayList存儲基本資料類型;

import java.util.ArrayList;

/*
目标:ArrayList存儲基本資料類型

ArrayList隻能存儲引用資料類型.不能存儲基本資料類型.
是就業班的知識點.我們先了解.
Java為每種基本資料類型都搞了一個對應的引用資料類型
    基本資料類型          對應的引用資料類型(包裝類)
    byte                    Byte
    short                   Short
    int                     Integer *****
    long                    Long
    float                   Float
    double                  Double
    char                    Character *****
    boolean                 Boolean

我們ArrayList中要儲存基本資料類型,需要寫對應的引用資料類型

小結:
    ArrayList不能存儲基本資料類型,隻能存儲引用資料類型.如果要存儲基本資料類型的資料.需要寫包裝類

 */
public class Demo06 {
    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);
    }
}

           

擴充練習:

題目1

現有如下字元串元素:[“aaa”, “bbb”, “aaa”, “aaa”, “ccc”, “bbb”],

請将所有的元素按順序存入ArrayList集合中,并周遊集合檢視存儲結果。

package demo07.Demo04;

import java.util.ArrayList;

/*
### 題目1
  現有如下字元串元素:["aaa", "bbb", "aaa", "aaa", "ccc", "bbb"],
    請将所有的元素按順序存入ArrayList集合中,并周遊集合檢視存儲結果。
 */
public class ArrayListTest02 {
    public static void main(String[] args) {
        String[] str = {"aaa", "bbb", "aaa", "aaa", "ccc", "bbb"};

        // 建立ArrayList集合
        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < str.length; i++) {
            list.add(str[i]);
        }

        // 周遊
        for (int j = 0; j < list.size(); j++) {
            System.out.print(list.get(j) + " ");
        }
    }
}
           

題目2:

​ 請定義教師(Teacher)類,屬性包含姓名和專業名稱。将若幹教師對象存入ArrayList集合中,并周遊集合列印教師資訊,格式如下:

姓名:光頭強老師, 專業:javase

姓名:平頭哥老師, 專業:javaee

姓名:熊大老師, 專業:php

姓名:熊二老師, 專業:python

package demo07.Demo04;

import java.util.ArrayList;

/*
### 題目2:

  請定義教師(Teacher)類,屬性包含姓名和專業名稱。
    将若幹教師對象存入ArrayList集合中,并周遊集合列印教師資訊,格式如下:

    姓名:光頭強老師, 專業:javase
    姓名:平頭哥老師, 專業:javaee
    姓名:熊大老師, 專業:php
    姓名:熊二老師, 專業:python
 */
public class ArrayListTest01 {
    public static void main(String[] args) {
        // 設定ArrayList集合
        ArrayList<Teacher> list = new ArrayList<>();

        // 添加教師資訊
        Teacher t1 = new Teacher("光頭強", "java");
        Teacher t2 = new Teacher("平頭哥", "javaEE");
        Teacher t3 = new Teacher("熊大", "Python");
        Teacher t4 = new Teacher("熊二", "php");

        list.add(t1);
        list.add(t2);
        list.add(t3);
        list.add(t4);

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

    }
}