大數據之路week01--day02_2 集合方面的總結

(初稿 太晚了,明天再進行補充)面試

一、對象數組(掌握)數組

  (1)數組既能夠存儲基本數據類型,也能夠存儲引用類型。它存儲引用類型的時候的數組就叫對象數組。安全

  (2)案例:數據結構

    用數組存儲5個學生對象,並遍歷數組。併發

 1 package day02;
 2 
 3 /** 
 4 * @author WYH
 5 * @version 2019年11月12日 下午10:28:33
 6 */
 7 public class test {
 8     public static void main(String[] args) {
 9         Students[] s = new Students[2];
10         
11         Students s1 = new Students("xiao",21);
12         Students s2 = new Students("da",22);
13         
14         s[0] = s1;
15         s[1] = s2;
16         
17         for(int i = 0;i<s.length;i++) {
18             System.out.println(s[i]);
19         }
20         
21         
22     }
23 
24 }

二、集合(Collection)(掌握)學習

  (1)集合的由來?spa

    咱們學習的時Java -- 面向對象 --操做不少對象 --存儲 -- 容器(數組和StringBuffer)-- 數組而數組得長度固定,因此不適合作變化得需求,Java就提供了集合供咱們使用。線程

  (2)集合和數組得區別?code

    A: 長度區別對象

      數組固定

      集合可變

    B: 內容區別

      數組能夠是基本類型,也能夠是引用類型

      集合只能是引用類型

    C: 元素內容

      數組只能存儲同一種類型

      集合能夠存儲不一樣類型(其實集合通常存儲得也是同一種類型)

  (3)集合的繼承體系結構?

      因爲需求不一樣,Java就提供了不一樣得集合類,而這多個集合類得數據結構不一樣,可是他們都是要提供存儲和遍歷功能得容器,咱們把他們得共性不斷向上提取,

最終就造成了集合得繼承體系結構。

  Collection

    |--List

      |--ArrayList

      |--Vector

      |--LinkList

    |--Set

      |--HashSet

      |--TreeSet

  (4)Collection得功能概述(本身補齊)

    A: 添加功能

    B:刪除功能

    C: 判斷功能

    D: 獲取功能

    E: 長度功能

    F: 交集(瞭解)

    G: 把集合轉數組(瞭解)

  (5)Collection集合得遍歷

    A: 把集合轉數組(瞭解)

    (代碼補充)

    B: 迭代器(集合專用方式)

              (代碼補充)

  (6)迭代器

    A: 是集合得獲取元素得方式

    B: 是依賴於集合而存在得

    C:迭代器得原理和源碼

      a:爲何定義爲了一個接口而不是一個實現類(若是是實現類,那麼就要提供具體得實現方法,可是咱們的集合有不少種,因此是一個接口)

      b: 看了看迭代器的內部類實現

  (7)Collecton集合的案例(遍歷方式 迭代器)

    集合的操做步驟:

      A: 建立集合對象

      B: 建立元素對象

      C: 把元素添加帶集合

      D: 遍歷集合

    A: 存儲字符串並遍歷

    (代碼補充)

    B: 存儲自定義對象並遍歷

    (代碼補充)

二、集合(List)(掌握)

  (1)List是Collection的子接口

    特色:有序(存儲順序和取出順序一致),可重複。

  (2)List的特有功能:(本身補齊)

    A: 添加功能

    B: 刪除功能

    C: 獲取功能

    D: 迭代器功能

    E: 修改功能

  (3)List集合的特有遍歷功能

    A: 由size()和get()結合。

    B: 代碼演示

    (代碼補充)(一種迭代器,一種for循環)

  (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。

相關文章
相關標籤/搜索