Java學習之隨堂筆記系列——day14

1.集合的體系結構以及Collection集合
    1.1 集合的體系結構:
        單列集合:Collection接口
            List接口:元素可重複
                ArrayList類、LinkedList類
            Set接口:元素不可以重複
                HashSet類、TreeSet類
        雙列集合:Map接口
                HashMap類
    1.2 Collection集合:
        創建對象:Collection<String> c=new ArrayList();
        常用方法:所有單列集合通用的方法。
            boolean add(E e):添加元素,返回值表示是否添加成功,使用ArrayList集合返回的是固定值true。
            boolean remove(Object o):從集合中移除指定的元素,返回值表示是否移除成功
            void clear():清空集合中的元素
            boolean contains(Object o):判斷集合中是否存在指定的元素,true表示包含
            boolean isEmpty():判斷集合是否爲空,true表示爲空
            int size():集合的長度,也就是集合中元素的個數

    1.3 Collection集合遍歷-迭代器
            //1、通過集合的iterator方法獲取迭代器對象。
            Iterator<String> it = coll.iterator();
            //2、循環判斷是否有下一個元素。it.hasNext()方法
            while(it.hasNext()){
                //3、如果有下一個元素,那麼就獲取下一個元素。it.next()方法
                String s = it.next();
                System.out.println(s);
            }

2.list集合的遍歷以及數據結構
    List集合的特點:
        1、有序:存和取得順序一致。
        2、元素可重複
        3、有索引,可以使用fori的方式遍歷。
    List集合常用方法:
        void add(int index,E element):在此集合中的指定位置插入指定的元素
        E remove(int index):刪除指定索引處的元素,返回被刪除的元素
        E set(int index,E element):修改指定索引處的元素,返回被修改的元素
        E get(int index):返回指定索引處的元素

    總結:在開發中我們一般是使用List集合而不是使用Collection集合。
        方法分類:
            增/添加:
                boolean add(E e):在集合的末尾添加元素e
                void add(int index, E e):在index索引出添加元素e
            刪/移除:
               boolean remove(E e):根據元素e刪除
               E remove(int index):根據索引index刪除元素
            改/設置:
                E set(int index,E element):將索引index處的元素重新設置成element,返回值是被修改的元素。
            查/獲取:
                E get(int index):根據索引獲取元素
                int size():獲取集合的長度
        遍歷方式:
            1、首選:fori遍歷,只能針對有索引的集合遍歷。
            2、迭代器iterator,但是不太推薦,麻煩。

    迭代器併發修改異常:ConcurrentModificationException,
        原因:集合中有一個記錄修改(添加和移除)次數的變量modCount。使用集合添加元素和刪除元素modCount都會++,也叫做實際修改次數++;
            iterator迭代器中也有一個期望修改次數的變量expectedModCount,默認值等於集合的modCount;每當我們調用迭代器的next()
            方法時,內部都會將expectedModCount和modCount進行比較,如果不一樣就會拋出ConcurrentModificationException併發
            修改異常。
            ps:集合的長度發生了變化,集合中的modCount就會++;

        解決辦法:
            第一種:使用fori遍歷代替迭代器的方式遍歷。
            第二種:不使用Itr迭代器,使用他的子類ListItr來遍歷集合,獲取的方式爲集合的listIterator();
                    但是添加元素和刪除元素要使用迭代器中提供的add方法和remove()

    增強for循環:第三種遍歷方式,底層使用的是迭代器,相當於迭代器的一種簡化遍歷方式。
        語法:用於遍歷集合和數組
            for(集合/數組元素類型 變量名:集合/數組對象){
                //循環體,變量保存的就是每次遍歷的結果。
            }
        快捷鍵:集合/數組對象.for+回車

3.ArrayList集合和LinkedList集合
    棧結構:先進後出。例如:彈夾
    隊列結構:先進顯出。例如:打飯排隊。

    數組結構:查詢快,增刪慢,ArrayList底層是數組結構
    鏈表結構:查詢慢,增刪快,LinkedList底層是鏈表接結構


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