day07【StringBuilder練習和ArrayList集合】課上

1.StringBuilder練習_拼接字符串(課下完成)

package com.itheima.sh.stringbuilder_01;


/*
    需求:
    ​	定義一個方法,把 int 數組中的數據按照指定的格式拼接成一個字符串返回,調用該方法,
    ​	並在控制檯輸出結果。例如,數組爲int[] arr = {1,2,3}; ,執行方法後的輸出結果爲:"[1, 2, 3]"
    步驟:
    1.定義一個int類型的數組 int[] arr = {1,2,3};
    2.在主方法中調用將數組拼接爲字符串的方法,並接收返回的字符串
    3.自定義方法將數組中的數據拼接爲字符串 int[] arr = {1,2,3};
    4.在定義方法中創建StringBuilder類的對象用來拼接數據
    5.向StringBuilder中添加一個數據 "["
    6.遍歷數組取出數組中的每個數據 1  ---》
        "[1, 2, "  所以:前兩個數據都是添加: "數據, "
        最後一個數據:"3]"--->"數據]"
        總結:
            最後一個數據添加緩衝區:"數據]"
            不是最後一個數據添加緩衝區: "數據, "
    7.判斷取出的數據是否是最後一個數據:
        如果取出的數據的索引等於最大索引(數組長度-1):說明是最後一個數據:最後一個數據添加緩衝區:"數據]"
        如果取出的數據的索引不等於最大索引(數組長度-1):說明不是最後一個數據: 不是最後一個數據添加緩衝區: "數據, "
        int[] arr = {1,2,3};
        [1, 2, 3]
    8.將字符串緩衝區轉換爲String
    9.將轉換後的String對象返回給調用者
    10.在主方法中輸出接收的結果

 */
public class StringBuilderTest01 {
    public static void main(String[] args) {
        // 1.定義一個int類型的數組
        int[] arr = {1, 2, 3};
        //2.在主方法中調用將數組拼接爲字符串的方法,並接收返回的字符串
        String s = arrayToString(arr);
        //10.在主方法中輸出接收的結果
        System.out.println("s = " + s);
    }

    //3.自定義方法將數組中的數據拼接爲字符串 int[] arr = {1,2,3};
    private static String arrayToString(int[] arr) {
        //4.在定義方法中創建StringBuilder類的對象用來拼接數據
        StringBuilder sb = new StringBuilder();
        //5.向StringBuilder中添加一個數據 "["
        sb.append("[");
        // 6.遍歷數組取出數組中的每個數據
        for (int i = 0; i < arr.length; i++) {
            int num = arr[i];
            //7.判斷取出的數據是否是最後一個數據:
            if(i == arr.length -1){
                // 如果取出的數據的索引等於最大索引(數組長度-1):說明是最後一個數據:最後一個數據添加緩衝區:"數據]"
                sb.append(num).append("]");
            }else{
                //如果取出的數據的索引不等於最大索引(數組長度-1):說明不是最後一個數據: 不是最後一個數據添加緩衝區: "數據, "
                sb.append(num).append(", ");
            }
        }
        //8.將字符串緩衝區轉換爲String
//        String s = sb.toString();
        String s = new String(sb);//不推薦使用
        //9.將轉換後的String對象返回給調用者
        return s;
    }
}

2.使用對象數組存儲自定義類的對象(理解)

需求:使用數組存儲三個自定義類Student的對象

package com.itheima.sh.demo_02;

/*
    需求:使用數組存儲三個自定義類Student的對象
    步驟:
    1.創建Student類
    2.定義數組存儲自定義類Student的對象,長度是3
        數組定義:
            int[] arr=new int[3]; 存儲int類型
            String[] arr=new String[3]; 存儲String類型的字符串
            Student[] arr=new Student[3]; 存儲Student類型的對象
    3.創建三個學生對象
    4.將學生對象添加到數組中
    5.遍歷數組取出每個學生對象
    6.使用學生對象調用方法輸出姓名和年齡

 */
public class Test01 {
    public static void main(String[] args) {
        // 2.定義數組存儲自定義類Student的對象,長度是3
        Student[] arr = new Student[3];
        //3.創建三個學生對象
        Student s1 = new Student("張三", 19);
        Student s2 = new Student("李四", 20);
        Student s3 = new Student("王五", 20);
        //4.將學生對象添加到數組中
        arr[0] = s1;
        arr[1] = s2;
        arr[2] = s3;
        //5.遍歷數組取出每個學生對象
        for (int i = 0; i < arr.length; i++) {
            Student s = arr[i];
            // 6.使用學生對象調用方法輸出姓名和年齡
            System.out.println(s.getName() + "---" + s.getAge());
        }
    }
}

小結:我們以前都是使用數組存儲基本類型數據,其實也使用數組存儲引用類型就是字符串,在java中數組既可以存儲基本類型也可以存儲引用數據類型。

3.ArrayList集合(必須掌握)

1.集合

集合屬於一種容器,專門用來存儲引用數據類型的數據,不能存儲基本數據類型數據。長度可變,可以存儲任意類型的引用數據類型。

我們今天先學習第一種集合:ArrayList集合。

總結:

數組和集合區別:

1.數組長度固定不變的,集合長度是可變的
2.數組可以存儲基本數據類型也可以存儲引用數據類型,集合只能存儲引用數據類型,不能存儲基本數據類型
3.數組存儲的數據類型單一,集合可以存儲不同的引用數據類型

2.ArrayList集合介紹

1.ArrayList集合是集合的一種,底層使用數組存儲數據。他屬於類。可以創建這個類的對象,並且使用對象調用方法。

2.該類位於java.util 包,需要導包。

3.可以存儲null

3.ArrayList構造方法

ArrayList() 構造一個初始容量爲 10 的空列表。

說明:ArrayList 在類的後面多了一個,表示泛型,和 接口 方法一起使用。

如果加了泛型,表示集合中只能存儲泛型表示的具體數據類型,這裏的E表示Element元素的縮寫。

 ArrayList<String> list = new ArrayList<String>(); 說明該集合只能存儲String類型
 ArrayList<Student> list = new ArrayList<Student>(); 說明該集合只能存儲Student類型
 jdk7後可以簡化寫法:
     ArrayList<Student> list = new ArrayList<>(); 說明該集合只能存儲Student類型

4.ArrayList方法

  • 添加方法 獲取長度 獲取數據方法

    package com.itheima.sh.arraylist_03;
    
    import java.util.ArrayList;
    
    /*
        方法:
            1.boolean add(E e) 將指定的元素添加到此列表的尾部。
                參數:
                    e:表示要添加到集合中的數據 E類型由創建ArrayList對象時確定
                返回值:對於ArrayList集合返回都是true
            2.public int size()返回集合中的元素的個數
            3.public E   get(int   index)返回指定索引處的元素
                    參數:index:表示索引,從0開始
                    返回值:表示取出的數據
     */
    public class ArrayListDemo01 {
        public static void main(String[] args) {
            //ArrayList() 構造一個初始容量爲 10 的空列表。
            //這裏泛型的具體數據類型是String,那麼這個集合只能存儲String類的對象
            ArrayList<String> list = new ArrayList<>();
            //向集合中添加數據
            list.add(null);
            list.add("蓉蓉");
            list.add("蓉蓉");
            list.add("騷喆");
            list.add("璐璐");
            boolean boo = list.add("pgone");
    //        System.out.println("boo = " + boo);
            //輸出list
            //list = [蓉蓉, 騷喆, 璐璐, pgone] toString
    //        System.out.println("list = " + list);//"[蓉蓉, 騷喆, 璐璐, pgone]"
            //2.public int size()返回集合中的元素的個數
           /* int size = list.size();
            System.out.println("size = " + size);//4
            //3.public E   get(int   index)返回指定索引處的元素
            String s = list.get(0);//蓉蓉
            System.out.println("s = " + s);
            System.out.println(list.get(1));//騷喆
            System.out.println(list.get(2));//璐璐
            System.out.println(list.get(3));//pgone
            //IndexOutOfBoundsException 索引越界異常 因爲最大索引是3 4超出了最大索引
            System.out.println(list.get(4));*/
            //使用for循環遍歷上述集合中的數據
    //        for(int i=0;i<集合長度;i++){//i表示索引
            for (int i = 0; i < list.size(); i++) {//i表示索引  list.size() 表示集合長度
                //使用get方法結合索引獲取集合數據
                String s = list.get(i);
                System.out.println("s = " + s);
            }
        }
    }
    
    

    小結:

    ​ 1.boolean add(E e) 將指定的元素添加到此列表的尾部。
    ​ 參數:
    ​ e:表示要添加到集合中的數據 E類型由創建ArrayList對象時確定
    ​ 返回值:對於ArrayList集合返回都是true
    ​ 2.**public int size()**返回集合中的元素的個數
    ​ 3.**public E get(int index)**返回指定索引處的元素
    ​ 參數:index:表示索引,從0開始
    ​ 返回值:表示取出的數據

    ​ 4.查看源碼:按住ctrl鍵,然後左鍵點擊方法名即可

    ​ 5.Arraylist集合可以存儲重複的數據和null

  • 其餘方法

    方法名 說明
    public boolean remove(Object o) 刪除指定的元素,返回刪除是否成功
    public E remove(int index) 刪除指定索引處的元素,返回被刪除的元素
    public E set(int index,E element) 修改指定索引處的元素,返回被修改的元素
    public void add(int index,E element) 在此集合中的指定位置插入指定的元素
package com.itheima.sh.arraylist_03;

import java.util.ArrayList;

/*
    1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功
            參數:表示要刪除的元素
            返回值:刪除成功是true 失敗是false
    2.public E   remove(int   index)刪除指定索引處的元素,返回被刪除的元素
            參數:index 要刪除元素的對應的索引值
            返回:被刪除的元素
    3.public E   set(int index,E   element)修改指定索引處的元素,返回被修改的元素
        參數:
            index:被修改的元素索引
            element:新的元素
        返回值:舊的元素
    4.public void   add(int index,E   element)在此集合中的指定位置插入指定的元素
                參數:
                    index:向哪個索引位置添加元素
                    element:要添加單位元素
 */
public class ArrayListDemo02 {
    public static void main(String[] args) {
        //創建集合對象
        ArrayList<String> list = new ArrayList<>();
        //添加數據
        list.add("柳巖");
        list.add("柳巖");
        list.add("大鵬");
        list.add("楊冪");
        list.add("冰冰");
        //刪除柳巖:  1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功4
        /*boolean boo = list.remove("柳巖");
        System.out.println("boo = " + boo);*/
        /*
             2.public E   remove(int   index)刪除指定索引處的元素,返回被刪除的元素
                參數:index 要刪除元素的對應的索引值
                返回:被刪除的元素
         */
//        String s1 = list.remove(1);//柳巖
//        String s1 = list.remove(2);//大鵬
//        System.out.println("被刪除的元素:" + s1);
        /*
             3.public E   set(int index,E   element)修改指定索引處的元素,返回被修改的元素
            參數:
                index:被修改的元素索引
                element:新的元素
            返回值:舊的元素
         */
        //將冰冰修改爲趙麗穎
//        String s2 = list.set(4, "趙麗穎");
//        System.out.println("舊的元素:"+s2);
        /*
             4.public void   add(int index,E   element)在此集合中的指定位置插入指定的元素
                參數:
                    index:向哪個索引位置添加元素
                    element:要添加單位元素
         */
        list.add(1, "鎖哥");
        //遍歷集合 list.fori遍歷集合快捷鍵
        for (int i = 0; i < list.size(); i++) {
            //獲取數據
            String s = list.get(i);
            System.out.println("s = " + s);
        }

    }
}

小結:

​ 1.public boolean remove(Object o)刪除指定的元素,返回刪除是否成功
​ 參數:表示要刪除的元素
​ 返回值:刪除成功是true 失敗是false
​ 2.public E remove(int index)刪除指定索引處的元素,返回被刪除的元素
​ 參數:index 要刪除元素的對應的索引值
​ 返回:被刪除的元素
​ 3.public E set(int index,E element)修改指定索引處的元素,返回被修改的元素
​ 參數:
​ index:被修改的元素索引
​ element:新的元素
​ 返回值:舊的元素
​ 4.public void add(int index,E element)在此集合中的指定位置插入指定的元素
​ 參數:
​ index:向哪個索引位置添加元素
​ element:要添加單位元素

  • 擴展方法:

    package com.itheima.sh.arraylist_03;
    
    import java.util.ArrayList;
    
    /*
        1.void clear() 清空集合
        2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。
        3.boolean isEmpty() 如果此列表中沒有元素,則返回 true
        4. Object[] toArray() 把集合中的數據放到Object類型數組
     */
    public class ArrayListDemo03 {
        public static void main(String[] args) {
            //創建集合對象
            ArrayList<String> list = new ArrayList<>();
            //添加數據
            list.add("柳巖");
            list.add("柳巖");
            list.add("大鵬");
            list.add("楊冪");
            list.add("冰冰");
    
    
            //遍歷集合 list.fori遍歷集合快捷鍵
           /* for (int i = 0; i < list.size(); i++) {
                //獲取數據
                String s = list.get(i);
                System.out.println("s = " + s);
            }*/
            //清空集合
    //        list.clear();
    //        //調用toString()
    //        System.out.println(list);
            //2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。
    //        System.out.println(list.contains("大鵬1"));
            //3.boolean isEmpty() 如果此列表中沒有元素,則返回 true
    //        System.out.println(list.isEmpty());//集合被清空了,那麼集合沒有數據,所以這裏是true
            //4. Object[] toArray() 把集合中的數據放到Object類型數組
            Object[] arr = list.toArray();
            //遍歷數組
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
        }
    }
    
    

    小結:

    ​ 1.void clear() 清空集合
    ​ 2.boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。
    ​ 3.boolean isEmpty() 如果此列表中沒有元素,則返回 true

    4. Object[] toArray() 把集合中的數據放到Object類型數組
    

ArrayList集合中的方法總結:

方法名 說明
public boolean remove(Object o) 刪除指定的元素,返回刪除是否成功
public E remove(int index) 刪除指定索引處的元素,返回被刪除的元素
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) 在此集合中的指定位置插入指定的元素
void clear() 清空集合
boolean contains(Object o) 如果此列表中包含指定的元素,則返回 true。
boolean isEmpty() 如果此列表中沒有元素,則返回 true
Object[] toArray() 把集合中的數據放到Object類型數組

5.ArrayList集合存儲自定義類的學生對象(課下必須完成)

package com.itheima.sh.demo_02;
// 1.創建Student類
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 com.itheima.sh.arraylist_04;

import com.itheima.sh.demo_02.Student;

import java.util.ArrayList;

/*
    ArrayList集合存儲自定義類的學生對象
    步驟:
    1.創建學生類Student
    2.創建學生對象
    3.創建集合類ArrayList對象 泛型  ArrayList<Student> list = new ArrayList<Student>();
    4.將上述的學生對象添加到集合中
    5.遍歷集合取出每個學生對象
    6.使用學生對象調用方法獲取姓名和年齡並輸出
 */
public class Test01 {
    public static void main(String[] args) {
        // 2.創建學生對象
        Student s1 = new Student("王澤萌", 25);
        Student s2 = new Student("寧宇", 20);
        Student s3 = new Student("李博", 25);
        Student s4 = new Student("李博", 25);
        // 3.創建集合類ArrayList對象 泛型
        ArrayList<Student> list = new ArrayList<>();
        //4.將上述的學生對象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        //5.遍歷集合取出每個學生對象 alt+/
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            //6.使用學生對象調用方法獲取姓名和年齡並輸出
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }
}

小結:

1.使用集合存儲自定義Student類型創建集合對象時指定泛型是Student

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

2.集合使用步驟:

​ 1)創建集合對象

​ 2)向集合中添加數據

​ 3)遍歷集合取出集合中的數據,然後繼續後續操作

6.ArrayList集合存儲自定義類的學生對象的升級版本(課下必須完成)

案例需求

創建一個存儲學生對象的集合,存儲3個學生對象,使用程序實現在控制檯遍歷該集合。

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

代碼演示:

package com.itheima.sh.arraylist_04;

import com.itheima.sh.demo_02.Student;

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

/*
   需求:
    創建一個存儲學生對象的集合,存儲3個學生對象,使用程序實現在控制檯遍歷該集合。
    學生的姓名和年齡來自於鍵盤錄入
    步驟:
    1.創建學生Student類
    2.創建集合對象,泛型是Student類
    3.調用方法專門用來獲取鍵盤錄入的數據,第2步創建的集合作爲方法參數傳遞
    4.在自定義方法中創建鍵盤錄入的對象和獲取錄入的姓名和年齡
        Scanner sc = new Scanner(System.in);
        sc.next();//姓名
        sc.nextInt();獲取年齡
    5.將錄入的姓名和年齡放到學生對象中
    6.將學生對象放到集合中
    7.遍歷集合

 */
public class Test02 {
    public static void main(String[] args) {
        //2.創建集合對象,泛型是Student類
        ArrayList<Student> list = new ArrayList<>();
        //3.調用方法專門用來獲取鍵盤錄入的數據,第2步創建的集合作爲方法參數傳遞
        addStudent(list);
        addStudent(list);
        addStudent(list);
        //7.遍歷集合
        for (int i = 0; i < list.size(); i++) {
            Student s = list.get(i);
            //輸出姓名和年齡
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }
    //自定義方法添加學生
    //ArrayList<Student> list = list new ArrayList<>();
    public static void addStudent(ArrayList<Student> list){
        // 4.在自定義方法中創建鍵盤錄入的對象和獲取錄入的姓名和年齡
        Scanner sc = new Scanner(System.in);
        //獲取姓名
        System.out.println("請輸入姓名:");
        String name = sc.next();
        //獲取年齡
        System.out.println("請輸入年齡:");
        int age = sc.nextInt();
        // 5.將錄入的姓名和年齡放到學生對象中
//        Student s = new Student(name, age);
        Student s = new Student();
        s.setName(name);
        s.setAge(age);
        //6.將學生對象放到集合中
        list.add(s);
    }
}

小結:由於addStudent方法傳遞的是list屬於 ArrayList類型,所以形參位置是 ArrayList類型

7.使用ArrayList集合存儲基本數據類型的數據

說明:集合只能存儲引用數據類型,不能存儲基本數據類型的數據。如果要想將基本數據類型的數據存儲到集合中,我們需要使用基本數據類型的對應的包裝類。

基本數據類型有四類八種,對應的包裝類也是四類八種。

基本數據類型: byte short int     long  float double char      boolean
    包裝類:  Byte Short Integer Long  Float Double Character Boolean

代碼演示:

package com.itheima.sh.arraylist_04;
import java.util.ArrayList;
public class Test03 {
    public static void main(String[] args) {
        /*
            基本數據類型: byte short int     long  float double char      boolean
            包裝類:      Byte Short Integer Long  Float Double Character Boolean
         */
        //創建集合對象
        ArrayList<Integer> list = new ArrayList<>();
        //添加數據
        list.add(10);
        list.add(20);
        list.add(20);
        //遍歷
        for (int i = 0; i < list.size(); i++) {
            Integer x = list.get(i);
            System.out.println(x);
        }
    }
}

小結:

1.包裝類: Byte Short Integer Long Float Double Character Boolean

2.集合存儲基本類型的數據必須使用包裝類:

 ArrayList<Integer> list = new ArrayList<>();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章