Java:Collection集合、泛型

zybing發表於2021-09-09

1)、集合是一個裝”引用型別”的”容器”

2)、Java內部提供了很多”集合類”,每種集合類對元素的儲存採用了不同的”資料結構”–集合儲存資料的方式。

3)、這些資料結構都是各有千秋,有的增刪快,查詢慢;有的增刪慢,查詢快

4)、常用資料結構:

1)、陣列:ArrayList(增刪慢,查詢快,常用於查詢)

2)、連結串列:LinkedList(增刪快,查詢慢,常用於運算元據)

3)、雜湊表:HashSet(增刪改查都快,但每次都要生成雜湊值)

……

5)、集合體系 


圖片描述

1)、新增

public boolean add(E e): 把給定的物件新增到當前集合中 。

 ArrayList會永遠返回true;

 set中新增重複元素時,返回false;

2)、刪除

public void clear() :清空集合中所有的元素。

public boolean remove(E e): 把給定的物件在當前集合中刪除。

 當移除多個相同元素,只移除遇到的第一個

3)、判斷

public boolean contains(E e): 判斷當前集合中是否包含給定的物件。

public boolean isEmpty(): 判斷當前集合是否為空。

4)、獲取

public int size(): 返回集合中元素的個數。

public Object[] toArray(): 把集合中的元素,儲存到陣列中。

5)、遍歷

public Iterator iterator():獲取一個迭代器

public Iterator iterator(): 獲取集合對應的迭代器,用來遍歷集合中的元素的。

1)、public boolean hasNext():如果仍有元素可以迭代,則返回 true。

2)、public E next():返回迭代的下一個元素。

publicstaticvoidmain(String[] args) {        

Collection list =newArrayList<>();        

list.add("aaa");        

list.add("bbb");        

list.add("ccc");        

list.add("ddd");        

System.out.println(list);        

Iterator iterable = list.iterator();while(iterable.hasNext()){            

System.out.println(iterable.next());        

}    

}



圖片描述

1)、增強for也叫:foreach迴圈,是一種for迴圈的新寫法;

2)、使用增強for可以遍歷陣列、集合:

1)、陣列:

int[] arr = {1,2,3,4,5,6};for(int  i = 0; i < arr.length ; i++){

    int n = arr[i];

    System.out.println(n);

}//增強forfor(int n:arr){//底層編譯為:普通for迴圈    System.out.println(n);

}

2)、集合:

ArrayList list =newArrayList<>();

//增強forfor(String str:list){

//底層編譯為:迭代器System.out.println(str);

}

1)、ArrayList list = new ArrayList<>();

String就是這個集合的泛型

集合中只允許寫入泛型的型別資料

2)、泛型的好處:可以讓編譯器幫助我們監視,只能向集合中新增指定的型別

泛型定義說明:

1)、中的E:可以是大寫、小寫、字元、多個字元;

2)、類中的方法可以使用這個型別名

class Student<E>{

    public void add(E e){}

    public E get(){return null;}

}

測試類:

Student<引用型別> stu = new Student<>();

stu.add(引用型別 物件名);

stu.get();//返回對應的引用型別

public classStudent{    public <E> void sum(E e1,E e2,E e3,E e4){//定義一個接收4個相同的值        System.out.println("e1 = "+e1);

        System.out.println("e2 = "+e2);

        System.out.println("e3 = "+e3);

        System.out.println("e4 = "+e4);

    }

}

測試類:

public static void main(String[] args) {

        Student student = new Student();

        student.<Integer>sum(1,2,3,4);//規定4個值的泛型為Integer        

       student.<String>sum("aaa","bbb","ccc","ddd");//String    

}

同泛型類:

public interfaceIA{

 public void add(E e);

}


圖片描述

1)、定義一個方法,方法的引數:任何泛型的集合

**

class Demo{

    public static void main(String[] args){

        ArrayList<String> list1 = new ArrayList<>();

        ArrayList<Integer> list2 = new ArrayList<>();

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

        p1(list1);//OK的        p1(list2);//OK的        p1(list3);//OK的        p1("呵呵");//錯誤        }

    public static void p1(ArrayList<?> list){

    }

}

2)、定義一個方法,方法的引數:一個類和他的子類做泛型的集合(

class Person{}

class Student extends Person{}

class JavaStudent extends Student{}

測試類:

class Demo{

    public static void main(String[] args){

        ArrayList<Person> list1 = new ArrayList<>();

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

        ArrayList<JavaStudent> list3 = new ArrayList<>();

        p1(list1);//錯誤        p1(list2);//OK的        p1(list3);//OK的    }

    public static void p1(ArrayList<? extends Student> list){}

}

3)、定義一個方法,方法的引數:一個類和他的父類做泛型的集合(

class Demo{

    public static void main(String[] args){

        ArrayList<Person> list1 = new ArrayList<>();

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

        ArrayList<JavaStudent> list3 = new ArrayList<>();

        p1(list1);//OK的        p1(list2);//OK的        p1(list3);//錯誤    }

    public static void p1(ArrayList<? super Student> list){}

}

[ ] 能夠說出集合與陣列的區別

1、集合的長度是可變的,集合可以存放引用型別

2、陣列的長度是有限的,陣列可以存放任意型別

[ ] 說出Collection集合的常用功能

.add(E e):向集合中新增元素

.clear():將集合清空

.remove(E e):清除集合中的特定元素

.contains(E e):查詢集合中是否有這個元素,返回boolean

.isEmpty();檢查集合是否為空,為空返回true

.size():返回集合的長度

.toArray():將集合轉化為陣列返回

[ ] 能夠使用迭代器對集合進行取元素

Iterator i = list.iterator;

i.hasNext():檢查集合中下一個是否有元素

i.Next():返回集合中的資料

[ ] 能夠說出集合的使用細節

[ ] 能夠使用集合儲存自定義型別

[ ] 能夠使用foreach迴圈遍歷集合

ArrayList<資料型別> list = new ArrayList<>();

for(資料型別 物件名:list){遍歷}

[ ] 能夠使用泛型定義集合物件

[ ] 能夠理解泛型上下限

[ ] 能夠闡述泛型萬用字元的作用



作者:煙火式Java
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2815308/,如需轉載,請註明出處,否則將追究法律責任。

相關文章