1)叶圃、集合是一個裝”引用類型”的”容器”
2)掺冠、Java內(nèi)部提供了很多”集合類”,每種集合類對元素的存儲采用了不同的”數(shù)據(jù)結(jié)構(gòu)”–集合存儲數(shù)據(jù)的方式斥黑。
3)锌奴、這些數(shù)據(jù)結(jié)構(gòu)都是各有千秋憾股,有的增刪快服球,查詢慢;有的增刪慢往枣,查詢快
4)婉商、常用數(shù)據(jù)結(jié)構(gòu):
? 1)渣叛、數(shù)組:ArrayList(增刪慢淳衙,查詢快饺著,常用于查詢)
? 2)幼衰、鏈表:LinkedList(增刪快渡嚣,查詢慢肥印,常用于操作數(shù)據(jù))
? 3)深碱、哈希表:HashSet(增刪改查都快,但每次都要生成哈希值)
? ……
5)功咒、集合體系?
1)刊侯、添加
public boolean add(E e): 把給定的對象添加到當(dāng)前集合中 锉走。
??ArrayList會永遠(yuǎn)返回true挪蹭;
??set中添加重復(fù)元素時,返回false辜羊;
2)八秃、刪除
public void clear()?:清空集合中所有的元素肉盹。
public boolean remove(E e): 把給定的對象在當(dāng)前集合中刪除上忍。
??當(dāng)移除多個相同元素纳本,只移除遇到的第一個
3)繁成、判斷
public boolean contains(E e): 判斷當(dāng)前集合中是否包含給定的對象巾腕。
public boolean isEmpty(): 判斷當(dāng)前集合是否為空混移。
4)歌径、獲取
public int size(): 返回集合中元素的個數(shù)回铛。
public Object[] toArray(): 把集合中的元素克锣,存儲到數(shù)組中袭祟。
5)、遍歷
public Iterator iterator():獲取一個迭代器
public Iterator iterator(): 獲取集合對應(yīng)的迭代器氨鹏,用來遍歷集合中的元素的压状。
? 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循環(huán)虎忌,是一種for循環(huán)的新寫法;
2)堪藐、使用增強for可以遍歷數(shù)組礁竞、集合:
? 1)杉辙、數(shù)組:
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循環(huán)? ? System.out.println(n);
}
? 2)蜘矢、集合:
ArrayList list =newArrayList<>();
//增強forfor(String str:list){
//底層編譯為:迭代器System.out.println(str);
}
1)并淋、ArrayList list = new ArrayList<>();
? String就是這個集合的泛型
? 集合中只允許寫入泛型的類型數(shù)據(jù)
2)县耽、泛型的好處:可以讓編譯器幫助我們監(jiān)視镣典,只能向集合中添加指定的類型
泛型定義說明:
? 1)、中的E:可以是大寫哑姚、小寫、字符倡蝙、多個字符绞佩;
? 2)品山、類中的方法可以使用這個類型名
class Student<E>{
? ? public void add(E e){}
? ? public E get(){return null;}
}
測試類:
Student<引用類型> stu = new Student<>();
stu.add(引用類型 對象名);
stu.get();//返回對應(yīng)的引用類型
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);//規(guī)定4個值的泛型為Integer? ? ? ??
? ? ? ?student.<String>sum("aaa","bbb","ccc","ddd");//String? ??
}
同泛型類:
public interfaceIA{
?public void add(E e);
}
1)、定義一個方法市栗,方法的參數(shù):任何泛型的集合
**
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)填帽、定義一個方法咙好,方法的參數(shù):一個類和他的子類做泛型的集合(
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)勾效、定義一個方法层宫,方法的參數(shù):一個類和他的父類做泛型的集合(
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){}
}
[ ] 能夠說出集合與數(shù)組的區(qū)別
1萌腿、集合的長度是可變的毁菱,集合可以存放引用類型
2锌历、數(shù)組的長度是有限的,數(shù)組可以存放任意類型
[ ] 說出Collection集合的常用功能
.add(E e):向集合中添加元素
.clear():將集合清空
.remove(E e):清除集合中的特定元素
.contains(E e):查找集合中是否有這個元素怔揩,返回boolean
.isEmpty();檢查集合是否為空商膊,為空返回true
.size():返回集合的長度
.toArray():將集合轉(zhuǎn)化為數(shù)組返回
[ ] 能夠使用迭代器對集合進行取元素
Iterator i = list.iterator;
i.hasNext():檢查集合中下一個是否有元素
i.Next():返回集合中的數(shù)據(jù)
[ ] 能夠說出集合的使用細(xì)節(jié)
[ ] 能夠使用集合存儲自定義類型
[ ] 能夠使用foreach循環(huán)遍歷集合
ArrayList<數(shù)據(jù)類型> list = new ArrayList<>();
for(數(shù)據(jù)類型 對象名:list){遍歷}
[ ] 能夠使用泛型定義集合對象
[ ] 能夠理解泛型上下限
[ ] 能夠闡述泛型通配符的作用
確定一個系統(tǒng)的學(xué)習(xí)Java的計劃,如果想自學(xué)材蹬,那么你就找一套非常系統(tǒng)的學(xué)習(xí)視頻堤器。如果你自己找不到系統(tǒng)的學(xué)習(xí)視頻≌海可以加下小編的Java學(xué)習(xí)群:557865078,編號(煙火)表蝙,不管你是小白還是大牛,小編我都?xì)g迎屿愚,不定期分享干貨,包括小編自己整理的一份2018最新的Java學(xué)習(xí)資料和0基礎(chǔ)入門教程扰法,歡迎初學(xué)和進階中的小伙伴