java基礎知識點梳理3

集合框架

特點:

1:對象封裝數據,對象多了也需要存儲。集合用於存儲對象。

2:對象的個數確定可以使用數組,但是不確定怎麼辦?可以用集合。因爲集合是可變長度的。

 

集合和數組的區別:

1:數組是固定長度的;集合可變長度的。

2:數組可以存儲基本數據類型,也可以存儲引用數據類型;集合只能存儲引用數據類型。

3:數組存儲的元素必須是同一個數據類型;集合存儲的對象可以是不同數據類型。

 

數據結構:就是容器中存儲數據的方式。

 

對於集合容器,有很多種。因爲每一個容器的自身特點不同,其實原理在於每個容器的內部數據結構不同。

集合容器在不斷向上抽取過程中。出現了集合體系。

在使用一個體系時,原則:參閱頂層內容。建立底層對象。


--< java.util >-- Collection接口:

Collection

    |--List:有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素可以重複。

    |--Set:無序(存入和取出順序有可能不一致),不可以存儲重複元素。必須保證元素唯一性。

 

1,添加:

    add(object):添加一個元素

    addAll(Collection) :添加一個集合中的所有元素。

2,刪除:

    clear():將集合中的元素全刪除,清空集合

    remove(obj) :刪除集合中指定的對象。注意:刪除成功,集合的長度會改變。

    removeAll(collection) :刪除部分元素。部分元素和傳入Collection一致。

3,判斷:

    boolean contains(obj) :集合中是否包含指定元素 。

    booleancontainsAll(Collection) :集合中是否包含指定的多個元素。

    boolean isEmpty():集合中是否有元素。

4,獲取:

    int size():集合中有幾個元素。

5,取交集:

    boolean  retainAll(Collection) :對當前集合中保留和指定集合中的相同的元素。如果兩個集合元素相同,返回flase;如果retainAll修改了當前集合,返回true。

6,獲取集合中所有元素:

    Iterator  iterator()迭代器

7,將集合變成數組:

    toArray();

List:有序(元素存入集合的順序和取出的順序一致),元素都有索引。元素可以重複。

    |--ArrayList:底層的數據結構是數組,線程不同步,ArrayList替代了Vector,查詢元素的速度非常快。

    |--LinkedList:底層的數據結構是鏈表,線程不同步,增刪元素的速度非常快。

    |--Vector:底層的數據結構就是數組,線程同步的,Vector無論查詢和增刪都巨慢。

--< java.util >-- Set接口

Set接口中的方法和Collection中方法一致的。Set接口取出方式只有一種,迭代器

  |--HashSet底層數據結構是哈希表,線程是不同步的無序,高效;

      HashSet集合保證元素唯一性:通過元素的hashCode方法,和equals方法完成的。

      當元素的hashCode值相同時,才繼續判斷元素的equals是否爲true。

      如果爲true,那麼視爲相同元素,不存。如果爲false,那麼存儲。

      如果hashCode值不同,那麼不判斷equals,從而提高對象比較的速度。

      |--LinkedHashSet:有序,hashset的子類。

  |--TreeSet對Set集合中的元素的進行指定順序的排序。不同步。TreeSet底層的數據結構就是二叉樹。



--< java.util >-- Iterator接口:

迭代器:是一個接口。作用:用於取集合中的元素。


Map集合:

|--Hashtable底層是哈希表數據結構,是線程同步的。不可以存儲null鍵,null值。

|--HashMap底層是哈希表數據結構,是線程不同步的。可以存儲null鍵,null值。替代了Hashtable.

|--TreeMap底層是二叉樹結構,可以對map集合中的鍵進行指定順序的排序。

 

Map集合存儲和Collection有着很大不同:

Collection一次存一個元素;Map一次存一對元素。

Collection是單列集合;Map是雙列集合。

Map中的存儲的一對元素:一個是鍵,一個是值,鍵與值之間有對應(映射)關係。

特點:要保證map集合中鍵的唯一性。

 

1,添加。

 put(key,value):當存儲的鍵相同時,新的值會替換老的值,並將老值返回。如果鍵沒有重複,返回null。

  void putAll(Map);

2,刪除。

  void clear():清空

  value remove(key):刪除指定鍵。

3,判斷。

  boolean isEmpty()

  boolean containsKey(key):是否包含key

  boolean containsValue(value):是否包含value

4,取出。

  int size():返回長度

  value get(key):通過指定鍵獲取對應的值。如果返回null,可以判斷該鍵不存在。當然有特殊情況,就是在hashmap集合中,是可以存儲null鍵null值的。

  Collection values()獲取map集合中的所有的值。

5,想要獲取map中的所有元素:

  原理:map中是沒有迭代器的,collection具備迭代器,只要將map集合轉成Set集合,可以使用迭代器了。之所以轉成set,是因爲map集合具備着鍵的唯一性,其實set集合就來自於map,set集合底層其實用的就是map的方法。



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