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){遍歷}
[ ] 能夠使用泛型定義集合對象
[ ] 能夠理解泛型上下限
[ ] 能夠闡述泛型通配符的作用