麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Java集合總結

2024-07-14 08:43:27
字體:
來源:轉載
供稿:網友

集合和數組在存儲數據的時候是各有優缺點的,先總結下集合和數組的區別

1.數組長度固定,集合長度不固定

2.數組只能存儲同一類型的元素,集合可以存儲不同數據類型(在引入泛型后,可以規定元素的類型相同)

3.數組可以存儲基本類型也可以存儲引用類型,集合只能存儲引用類型

集合類由兩大接口派生而出:Collection<E>和Map<K,V>

Collection<E>:是接口,需要由實現類去實現接口,存儲單列元素。

它的主要方法:

添加:boolean add(E e)  移除:boolean remove(Object o)  判斷是否包含某元素:boolean contains(Object o)  返回集合中元素的個數:int size()   判斷集合是否為空:boolean isEmpty()  迭代器:Iterator<E> iterator()  是Collection集合特有的一種遍歷方式,實現了Iterable<E>接口,使用boolean hasNext():如果迭代器中還有元素,則返回true。和E next():返回迭代器中的下一個元素  這兩個方法進行遍歷

它的子接口:List<E>Set<E>Queue<E>。List集合中元素是有序不唯一的(有序是指存儲有序但不是排序),Set集合中元素是無序但唯一的。

List<E>集合的實現類:

  • ArrayList:底層數據結構是數組,查詢快,增刪慢;線程不安全,效率高;
  • Vector:底層數據結構是數組,查詢快,增刪慢;線程安全,效率低;
  • LinkedList:底層數據結構是聯邦,查詢慢,增刪快;線程不安全,效率低。
  • Queue<E>:底層數據結構是隊列,類似于List(Queue接觸較少,后面不做總結)

Set<E>集合的實現類:

HashSet:底層數據結構是哈希表,依賴HashCode()方法和equals()方法。這兩個方法的執行順序:先HashCode(),值不同:添加;值相同:equals()值,不同:添加;相同:不添加。 其子類LinkedHashSet,底層數據結構由哈希表及鏈表構成,鏈表保證元素有序,Set保證元素唯一。

TreeSet:底層數據結構是紅黑樹,是一種自平衡的二叉樹。元素排序(是排序不是有序!)

排序分為自然排序和比較器排序。自然排序:元素具備比較性,元素所屬類實現接口Comparable即可,比如我們平常使用的Integer,String都已實現Comparable接口;比較器排序:如果元素是自定義類時,需要按需求對元素進行排序,比如按自定義類中的某個成員變量的大小進行排序,此時需要集合接收一個Comparator的實現類對象,可采用匿名內部類或外部類去重寫compare()方法。

Map<K,V>:是一個接口,K是鍵 ,V是該鍵對應的值,存儲的元素是鍵值對,也就是成對存在的,存儲雙列元素。鍵不能重復,每一個鍵最多映射一個值。

它的主要方法:

添加:V put(K key,V value)   刪除:V remove(K key,V value)   判斷:1).boolean containsKey(Object o):是否包含某個鍵;2).boolean containsValue(Object o):是否包含某個值;3).boolean isEmpty():是否為空  獲取:1) Set<K> keySet() 獲取所有鍵的視圖  2) V get(Object key) 返回改建對應的值  3) int size() 獲得該集合的鍵值對的對數

Map集合的遍歷方式:

1)鍵找值:將所有的鍵獲取到一個集合Set中,再遍歷該集合獲取對應的值

2)由鍵值對對象找鍵和值:獲取所有的鍵值對對象到集合中,再遍歷該集合獲得每一個鍵值對的鍵和值

Map常用的實現類與Set的實現類類似:

  • Hashtable:類似HashSet,線程安全,效率低,被HashMap替代;
  • HashMap:類似HashSet,線程不安全,效率高;
  • LinkedHashMap:類似LinkedHashSet;
  • TreeMap:類似SetMap

注意:Map集合的數據結構僅對鍵有效,與值無關。

判斷使用哪個集合:

是否是鍵值對形式的元素?

是:Map

是否需要排序?

是:TreeMap

否:HashMap

否:Collection

是否唯一(或有序)

不唯一,有序:List

數據結構:數組:ArrayList(線程不安全,效率高);Vector(線程安全,效率低)

鏈表:LinkedList(線程不安全,效率高);

唯一,無序:Set

是否排序?

是:TreeSet

否:HashSet

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 红杏亚洲影院一区二区三区 | free japan xxxxhdsex69 | 看免费黄色大片 | 国产毛片毛片毛片 | 亚洲片在线 | 久久免费视频5 | 操操操操操 | 国产精品91久久久 | 国产成人精品免费视频大全最热 | 91网视频 | 毛片网站视频 | 国产视频第一区 | 中文字幕精品亚洲 | 亚洲国产精品久久久久制服红楼梦 | 久久精品毛片 | 成人一区久久 | 一级黄色片武则天 | 成av在线| 一级一级一级一级毛片 | 国产精品久久久久久久四虎电影 | 久久99综合 | 国产一区二区三区欧美 | 久久久青 | 一级大片在线观看 | 日日天日日夜日日摸 | 久久精品视频在线 | 黄色大片大毛片 | 91久久综合 | 国产亚洲精品久久久久久久久久 | 999久久国精品免费观看网站 | 久久久久亚洲a | 久久55| 国产色视频一区 | 一本一本久久a久久精品综合小说 | 国产一区二区三区视频在线 | 国产精品久久久久久久久久久久午夜 | 国产一区二区精品91 | 九一免费在线观看 | 九九视频精品在线 | 狠狠干狠狠操 | 久草在线新时代视觉 |