day15總結

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:存儲自定義對象並遍歷


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章