java集合底層數據結構,Java集合框架使用總結

 2023-11-07 阅读 16 评论 0

摘要:Java集合框架使用總結 前言:本文是對Java集合框架做了一個概括性的解說,目的是對Java集合框架體系有個總體認識,如果你想學習具體的接口和類的使用方法,請參看JavaAPI文檔。 一、概述數據結構對程序設計有著深遠的影響,在面向過程的C語言中

Java集合框架使用總結

前言:
本文是對Java集合框架做了一個概括性的解說,目的是對Java集合框架體系有個總體認識,如果你想學習具體的接口和類的使用方法,請參看JavaAPI文檔。

一、概述
數據結構對程序設計有著深遠的影響,在面向過程的C語言中,數據庫結構用struct來描述,而在面向對象的編程中,數據結構是用類來描述的,并且包含有對該數據結構操作的方法。
在Java語言中,Java語言的設計者對常用的數據結構和算法做了一些規范(接口)和實現(具體實現接口的類)。所有抽象出來的數據結構和操作(算法)統稱為Java集合框架(JavaCollectionFramework)。
Java程序員在具體應用時,不必考慮數據結構和算法實現細節,只需要用這些類創建出來一些對象,然后直接應用就可以了。這樣就大大提高了編程效率。

java集合底層數據結構、二、集合框架的層次結構
Collection是集合接口
|————Set子接口:無序,不允許重復。
|————List子接口:有序,可以有重復元素。

區別:Collections是集合類

Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。

Set和List具體子類:
Set
|————HashSet:以哈希表的形式存放元素,插入刪除速度很快。

java基本框架、List
|————ArrayList:動態數組
|————LinkedList:鏈表、隊列、堆棧。

Array和java.util.Vector
Vector是一種老的動態數組,是線程同步的,效率很低,一般不贊成使用。

三、Iterator迭代器(接口)
Iterator是獲取集合中元素的過程,實際上幫助獲取集合中的元素。
迭代器代替了JavaCollectionsFramework中的Enumeration。迭代器與枚舉有兩點不同:
迭代器允許調用方利用定義良好的語義在迭代期間從迭代器所指向的集合移除元素。
方法名稱得到了改進。

Iterator僅有一個子接口ListIterator,是列表迭代器,允許程序員按任一方向遍歷列表、迭代期間修改列表,并獲得迭代器在列表中的當前位置。ListIterator沒有當前元素;它的光標位置始終位于調用previous()所返回的元素和調用next()所返回的元素之間。在長度為n的列表中,有n+1個有效的索引值,從0到n(包含)。

java集合框架、四、集合框架之外的Map接口
Map將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射一個值。
Map接口是Dictionary(字典)抽象類的替代品。
Map接口提供三種collection視圖,允許以鍵集、值集合或鍵-值映射關系集的形式查看某個映射的內容。映射的順序定義為迭代器在映射的collection視圖中返回其元素的順序。某些映射實現可明確保證其順序,如TreeMap類;某些映射實現則不保證順序,如HashMap類。

有兩個常見的已實現的子類:
HashMap:基于哈希表的Map接口的實現。此實現提供所有可選的映射操作,并允許使用null值和null鍵。(除了不同步和允許使用null之外,HashMap類與Hashtable大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。

TreeMap:它實現SortedMap接口的基于紅黑樹的實現。此類保證了映射按照升序順序排列關鍵字,根據使用的構造方法不同,可能會按照鍵的類的自然順序進行排序(參見Comparable),或者按照創建時所提供的比較器進行排序。

Hashtable:此類實現一個哈希表,該哈希表將鍵映射到相應的值。任何非null對象都可以用作鍵或值。

一般總結的寫作框架?五、線程安全類
在集合框架中,有些類是線程安全的,這些都是JDK1.1中的出現的。在JDK1.2之后,就出現許許多多非線程安全的類。
下面是這些線程安全的同步的類:
Vector:就比ArrayList多了個同步化機制(線程安全)。
Statck:堆棧類,先進后出。
Hashtable:就比HashMap多了個線程安全。
Enumeration:枚舉,相當于迭代器。
除了這些之外,其他的都是非線程安全的類和接口。
線程安全的類其方法是同步的,每次只能一個訪問。是重量級對象,效率較低。對于非線程安全的類和接口,在多線程中需要程序員自己處理線程安全問題。

六、其他一些接口和類介紹
Dictionary和Hashtable類:
Dictionary提供鍵值映射的功能,是個抽象類。一般使用它的子類HashTable類。遍歷Hashtable類要用到枚舉。

Properties類
Properties繼承于Hashtable,Properties類表示了一個持久的屬性集。Properties可保存在流中或從流中加載。屬性列表中每個鍵及其對應值都是一個字符串。一般可以通過讀取properties配置文件來填充Properties對象。

轉載于:https://www.cnblogs.com/ziq711/p/5603926.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/167535.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息