Java中的ArrayList集合詳解

ArrayList

對於Arraylist來說,有一個尖括號代表泛型。
泛型:依舊是裝在集合當中的所有元素,全都是統一的什麼類型。
注意泛型只能是引用類型,不能是基本類型。
擴展:如果希望集合ArrayList當中存儲基本類型數據,必須使用基本類型對應的“包裝類”。

基本類型包裝類(引用類型,包裝類都位於java.lang包下)
byte		Byte
short		Short
int			Interger【特殊】
long		Long
float		Float
double		Double
char		Character【特殊】
boolean		Boolean

注意事項:
對於ArrayList集合來說,直接打印得到的不是地址值,而是內容
如果內容是空,得到的是空的中括號:[]

import java.util.ArrayList;

public class demo02Arraylist {
    public static void main(String[] args) {
        //創建一個ArrayList集合,集合的名稱是list,
        //面裝的全都是String字符串類型的數據,在後面的插入時候只能插入字符串類型
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //向集合當中添加一些數據,需要用到add方法(尾插法)
        list.add("111");
        System.out.println(list);//[111]

        list.add("222");
        list.add("333");
        list.add("444");
        System.out.println(list);//[111, 222, 333, 444]
    }
}

如果想要添加一些整數的基本類型,則需要改變泛型的類型:

import java.util.ArrayList;

public class demo02ArrayListBasic {
    public static void main(String[] args) {
        ArrayList<String> listA = new ArrayList<>();

        //錯誤的寫法!,泛型只能是引用類型,不能是基本類型
        //ArrayList<int> listB = new ArrayList<>();

        ArrayList<Integer> listB = new ArrayList<>();
        listB.add(100);
        listB.add(200);
        listB.add(300);
        System.out.println(listB);//[100, 200, 300]

        //從JDK1.5+開始,支持自動裝箱,自動拆箱
        //自動裝箱:基本類型 -->  包裝類型
        //自動拆箱:包裝類型 -->  基本類型
        //Integer num = listB.get(2);
        int num = listB.get(2);
        System.out.println("第二號元素是:"+num);//第二號元素是:300
    }
}

下面介紹一些ArrayList集合常用方法和遍歷:

ArrayList當中的常用方法有:
public boolean add(E e):向集合當中添加元素,參數的類型和泛型一致
public E get(int index):從集合當中獲取元素,參數是索引編號,返回值就是對應位置的元素。
public E remove(int index) :從集合當中刪除元素,參數是索引編號,返回值就是被刪除掉的元素。
public int size():獲取集合的尺寸長度,返回值是集合中包含的元素個數。

實例代碼:

import java.util.ArrayList;

public class demo02ArraylistMethod {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        System.out.println(list);//[]

        //向集合中添加元素
        boolean success = list.add("000");
        System.out.println(list);//[000]
        System.out.println("添加是否成功:"+success);//添加是否成功:true

        list.add("111");
        list.add("222");
        list.add("333");
        list.add("444");
        System.out.println(list);//[000, 111, 222, 333, 444]

        //得到集合中指定位置的集合元素,集合是從0開始的
        String getString = list.get(2);
        System.out.println("得到的元素爲:"+getString);//得到的元素爲:222

        //獲取集合中元素的個數
        int size = list.size();
        System.out.println("此時集合中元素個數爲:"+size);//此時集合中元素個數爲:5

        //刪除指定位置處的元素
        String removeString = list.remove(3);
        System.out.println("被移除的元素爲:"+removeString);//被移除的元素爲:333

        //再次查看集合元素的個數,看是否少一
        System.out.println("此時元素的個數爲:"+list.size());//此時元素的個數爲:4
    }
}

ArrayList常用的遍歷方法:

import java.util.ArrayList;

public class demo02ArrayListEach {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("1111");
        list.add("2222");
        list.add("3333");
        
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

ArrayList練習1:生成6個1~33之間的隨機整數添加到集合,並遍歷集合。

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

public class demo02ArrayListRandom {
    public static void main(String[] args) {
        //創建Random對象
        Random r = new Random();

        //創建ArrayList對象
        ArrayList<Integer> list = new ArrayList<>();

        //添加隨機數到集合
        for(int i = 1; i<= 6; i++){
            list.add(r.nextInt(33)+1);//r.nextInt(33)+1爲產生的隨機數,範圍在[1,33]
        }

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

ArrayList練習2,自定義5個學生對象,添加到集合並遍歷:


import java.util.ArrayList;

//學生類的定義
public class Student {
    String name;
    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;
    }
}

//主類
public class demo02ArrayListStudent {
    public static void main(String[] args) {
        //創建ArrayList集合對象
        ArrayList<Student> list = new ArrayList<>();

        //創建學生對象
        Student s1 = new Student("111",11);
        Student s2 = new Student("222",22);
        Student s3 = new Student("333",33);
        Student s4 = new Student("444",44);
        Student s5 = new Student("555",55);


        //把學生對象作爲元素添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        list.add(s5);

        //遍歷結合:for ,size,get
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getName() +"--------"+list.get(i).getAge());
        }

    }
}

ArrayList練習3(ArrayList集合作爲參數),定義一指定格式打印集合的方法(ArrayList類型座位參數),使用{}擴起集合,使用@分割每個元素,格式參照{元素@元素@元素}:

import java.util.ArrayList;

public class demo02ArrayListPrint {
    public static void main(String[] args) {
        //創建一個ArrayLis對象
        ArrayList<String> list = new ArrayList<>();

        //添加元素到集合中
        list.add("洪七公");
        list.add("張無忌");
        list.add("楊過");
        System.out.println(list);//[洪七公, 張無忌, 楊過]

        //調用方法
        PrintList(list);//{洪七公@張無忌@楊過}
    }
    public static void PrintList(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)+"@");
            }
        }
        
    }
    
}

ArrayList練習4(ArrayList集合作爲返回值),用一個大集合存入20個隨機數字,然後篩選其中的偶數元素,放到小集合當中,要求使用自定義的方法來實現篩選:

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

public class demo02ArrayListReturn {
    public static void main(String[] args) {
        //創建ArrayList對象
        ArrayList<Integer> list = new ArrayList<>();

        //創建Random對象
        Random r = new Random();

        //向集合中添加20個元素
        for(int i = 0; i < 20; i++){
            list.add(r.nextInt(20)+1);
        }
        //未調用篩選方法之前
        System.out.println(list);

        //打印並且調用篩選方法
        System.out.println(arrayListReturn(list));

    }

    /**
     * 三要素:返回值類型,方法名稱,參數列表
     * @param list
     * @return
     */
    public static ArrayList<Integer> arrayListReturn(ArrayList<Integer> list){
        //循環查找
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i) % 2 == 0){//是偶數則繼續
                continue;
            }else {
                list.remove(i);//不是偶數則移除集合
                i--;//同時需要把變量i的值-進行1操作
            }
        }
        
        return list;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章