天天看點

黑馬程式員_Java_集合總結

黑馬程式員Java集合總結

——Java教育訓練、Android教育訓練、iOS教育訓練、.Net教育訓練、期待與您交流! ——-

1:集合體系

集合

|–Collection(單列)

|–List(有序,可重複)

|–ArrayList

底層資料結構是數組,查詢快,增删慢。

線程不安全,效率高。

|–Vector

底層資料結構是數組,查詢快,增删慢。

線程安全,效率低。

|–LinkedList

底層資料結構是連結清單,查詢慢,增删快。

線程不安全,效率高。

|--Set(無序,唯一)
                     |--HashSet
                               底層資料結構是哈希表。
                               線程不安全,效率高。

                             怎麼保證唯一性的呢?
                             它依賴兩個方法:hashCode()和equals()
                            順序:
                                    首先判斷hashCode()值是否相同。
                                    相同:繼續走equals(),看傳回值
                                    如果true:就不添加到集合。
                                    如果false:就添加到集合。
                                    不同:就添加到集合。
                     |--TreeSet
                             底層資料結構是二叉樹。
                             線程不安全,效率高。

                           怎麼保證唯一性的呢?是根據傳回是否是0。
                           怎麼保證排序的呢?兩種方式
                           自然排序(元素具備比較性)
                           實作Comparable接口
                           比較器排序(集合具備比較性)
                           實作Comparator接口


     |--Map(雙列 底層結構是針對鍵有效,跟值無關)
                   |--HashMap
                          底層資料結構是哈希表。
                          線程不安全,效率高。

                        怎麼保證唯一性的呢?
                        它依賴兩個方法:hashCode()和equals()
                        順序:
                             首先判斷hashCode()值是否相同。
                             同:繼續走equals(),看傳回值
                              如果true:就不添加到集合。
                             如果false:就添加到集合。
                             不同:就添加到集合。
                |--Hashtable
                        底層資料結構是哈希表。
                        線程安全,效率低。

                        怎麼保證唯一性的呢?
                        它依賴兩個方法:hashCode()和equals()
                        順序:
                                首先判斷hashCode()值是否相同。
                                同:繼續走equals(),看傳回值
                                如果true:就不添加到集合。
                                 如果false:就添加到集合。
                               不同:就添加到集合。
                |--TreeMap
                              底層資料結構是二叉樹。
                              線程不安全,效率高。

                              怎麼保證唯一性的呢?是根據傳回是否是0。
                              怎麼保證排序的呢?兩種方式
                              自然排序(元素具備比較性)
                              實作Comparable接口
                              比較器排序(集合具備比較性)
                               實作Comparator接口
           

2:集合常用方法。(添加功能,判斷功能,删除功能,擷取功能,長度功能)

Collection

add(Object obj)

remove(Object obj)

contains(Object obj)

iterator()

size()

|--List
       get(int index)
       add(int index,Object obj)
       remove(int index)
       set(int index,Object obj)
    |--Set
           

Map

put(Object key,Object value)

remove(Object key)

containsKey(Object key)

containsValue(Object value)

size()

get(Object key)

keySet()

values()

3:周遊方式

List:

疊代器

增強for(開發中看到,JDK5以後用)

普通for

如果僅僅為了周遊,用任意一種即可。一般選擇前兩種的任意一種。
     如果要做修改,或者删除指定位置的元素,或者在指定位置添加元素。用普通for。
           

Set:

疊代器

增強for

Map:

鍵找值。

4:代碼展現集合周遊。

A:ArrayList:

ArrayList array = new ArrayList();

方式1:
                Iterator<String> it = array.iterator();
                while(it.hasNext()){
                String s = it.next();
                System.out.println(s);
             }

         方式2:
                for(String s : array){
                System.out.println(s);
            }

          方式3:
           for(int x=0; x<array.size(); x++){
             String s = array.get(x);
             System.out.println(s);
          }
           

B:HashSet:

HashSet hs = new HashSet();

方式1:

Iterator it = hs.iterator();

while(it.hasNext()){

String s = it.next();

System.out.println(s);

}

方式2:

for(String s : hs)

{

System.out.println(s);

}

C:HashMap:

HashMap

繼續閱讀