15

1:對象數組(掌握)
(1)數組既可以存儲基本數據類型,也可以存儲引用類型。它存儲引用類型的時候的數組就叫對象數組。
(2)案例:
用數組存儲5個學生對象,並遍歷數組。


2:集合(Collection)(掌握)
(1)集合的由來?
我們學習的是Java -- 面向對象 -- 操作很多對象 -- 存儲 -- 容器(數組和StringBuffer) -- 數組
而數組的長度固定,所以不適合做變化的需求,Java就提供了集合供我們使用。
(2)集合和數組的區別?
A:長度區別
數組固定
集合可變
B:內容區別
數組可以是基本類型,也可以是引用類型
集合只能是引用類型
C:元素內容
數組只能存儲同一種類型
集合可以存儲不同類型(其實集合一般存儲的也是同一種類型)
(3)集合的繼承體系結構?
由於需求不同,Java就提供了不同的集合類。這多個集合類的數據結構不同,但是它們都是要提供存儲和遍歷功能的,
我們把它們的共性不斷的向上提取,最終就形成了集合的繼承體系結構圖。

Collection
|--List
|--ArrayList
|--Vector
|--LinkedList
|--Set
|--HashSet
|--TreeSet
(4)Collection的功能概述(自己補齊)
A:添加功能
B:刪除功能
C:判斷功能
D:獲取功能
E:長度功能
F:交集(瞭解)
G:把集合轉數組(瞭解)
(5)Collection集合的遍歷
A:把集合轉數組(瞭解)
B:迭代器(集合專用方式)
(6)迭代器
A:是集合的獲取元素的方式。
B:是依賴於集合而存在的。
C:迭代器的原理和源碼。
a:爲什麼定義爲了一個接口而不是實現類?
b:看了看迭代器的內部類實現。
(7)Collection集合的案例(遍歷方式 迭代器)
集合的操作步驟:
A:創建集合對象
B:創建元素對象
C:把元素添加到集合
D:遍歷集合

A:存儲字符串並遍歷
import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

public class CollectionDemo {
public static void main(String[] args) {
//創建集合對象
Collection c = new ArrayList();

//創建並添加元素
c.add("hello");
c.add("world");
c.add("java");

//遍歷集合
Iterator it = c.iterator();
while(it.hasNext()) {
String s =(String) it.next();
System.out.println(s);
}
}
}

B:存儲自定義對象並遍歷
public class Student {
private String name;
private int age;

public Student(){}

public Student(String name,int age) {
this.name = name;
this.age = age;
}

//getXxx()/setXxx()
}

import java.util.Collection;
import java.util.ArrayList;
import java.util.Iterator;

public class StudentDemo {
public static void main(String[] args) {
//創建集合對象
Collection c = new ArrayList();

//創建學生對象
Student s1 = new Student("林青霞",27);
Student s2 = new Student("風清揚",30);
Student s3 = new Student("劉意",30);
Student s4 = new Student("武鑫",25);
Student s5 = new Student("劉曉曲",16);

//添加元素
c.add(s1);
c.add(s2);
c.add(s3);
c.add(s4);
c.add(s5);

//遍歷集合
Iterator it = c.iterator();
while(it.hasNext()) {
Student s = (Student)it.next();
System.out.println(s.getName()+"---"+s.getAge());
}
}
}


3:集合(List)(掌握)
(1)List是Collection的子接口
特點:有序(存儲順序和取出順序一致),可重複。
(2)List的特有功能:(自己補齊)
A:添加功能
B:刪除功能
C:獲取功能
D:迭代器功能
E:修改功能
(3)List集合的特有遍歷功能
A:由size()和get()結合。
B:代碼演示
//創建集合對象
List list = new ArrayList();

//創建並添加元素
list.add("hello");
list.add("world");
list.add("java");

//遍歷集合
Iterator it = list.iterator();
while(it.hasNext()) {
String s =(String) it.next();
System.out.println(s);
}
System.out.println("----------");

for(int x=0; x<list.size(); x++) {
String s =(String) list.get(x);
System.out.println(s);
}
(4)列表迭代器的特有功能;(瞭解)
可以逆向遍歷,但是要先正向遍歷,所以無意義,基本不使用。
(5)併發修改異常
A:出現的現象
迭代器遍歷集合,集合修改集合元素
B:原因
迭代器是依賴於集合的,而集合的改變迭代器並不知道。
C:解決方案
a:迭代器遍歷,迭代器修改(ListIterator)
元素添加在剛纔迭代的位置
b:集合遍歷,集合修改(size()和get())
元素添加在集合的末尾
(6)常見數據結構
A:棧 先進後出
B:隊列 先進先出
C:數組 查詢快,增刪慢
D:鏈表 查詢慢,增刪快
(7)List的子類特點(面試題)
ArrayList
底層數據結構是數組,查詢快,增刪慢。
線程不安全,效率高。
Vector
底層數據結構是數組,查詢快,增刪慢。
線程安全,效率低。
LinkedList
底層數據結構是鏈表,查詢慢,增刪快。
線程不安全,效率高。

到底使用誰呢?看需求?
分析:
要安全嗎?
要:Vector(即使要,也不使用這個,後面再說)
不要:ArrayList或者LinkedList
查詢多;ArrayList
增刪多:LinkedList

什麼都不知道,就用ArrayList。
(8)List集合的案例(遍歷方式 迭代器和普通for)
A:存儲字符串並遍歷
B:存儲自定義對象並遍歷
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章