摇滚java游戏_java 集合类
一、Array , Arrays
Java所有“存儲(chǔ)及隨機(jī)訪問一連串對象”的做法,array是最有效率的一種。
1、
效率高,但容量固定且無法動(dòng)態(tài)改變。
array還有一個(gè)缺點(diǎn)是,無法判斷其中實(shí)際存有多少元素,length只是告訴我們array的容量。
2、Java中有一個(gè)Arrays類,專門用來操作array。
arrays中擁有一組static函數(shù),
equals():比較兩個(gè)array是否相等。array擁有相同元素個(gè)數(shù),且所有對應(yīng)元素兩兩相等。
fill():將值填入array中。
sort():用來對array進(jìn)行排序。
binarySearch():在排好序的array中尋找元素。
System.arraycopy():array的復(fù)制。
二、Collection , Map
若撰寫程序時(shí)不知道究竟需要多少對象,需要在空間不足時(shí)自動(dòng)擴(kuò)增容量,則需要使用容器類庫,array不適用。
1、Collection 和 Map 的區(qū)別
容器內(nèi)每個(gè)為之所存儲(chǔ)的元素個(gè)數(shù)不同。
Collection類型者,每個(gè)位置只有一個(gè)元素。
Map類型者,持有 key-value pair,像個(gè)小型數(shù)據(jù)庫。
2、各自旗下的子類關(guān)系
Collection??? --List:將以特定次序存儲(chǔ)元素。所以取出來的順序可能和放入順序不同。
--ArrayList / LinkedList / Vector??? --Set : 不能含有重復(fù)的元素
--HashSet / TreeSet
Map
--HashMap
--HashTable
--TreeMap
3、其他特征
*? List,Set,Map將持有對象一律視為Object型別。
*? Collection、List、Set、Map都是接口,不能實(shí)例化。
繼承自它們的 ArrayList, Vector, HashTable, HashMap是具象class,這些才可被實(shí)例化。
*? vector容器確切知道它所持有的對象隸屬什么型別。vector不進(jìn)行邊界檢查。
三、Collections
Collections是針對集合類的一個(gè)幫助類。提供了一系列靜態(tài)方法實(shí)現(xiàn)對各種集合的搜索、排序、線程完全化等操作。
相當(dāng)于對Array進(jìn)行類似操作的類——Arrays。
如,Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 對list中元素排序
四、如何選擇?
1、容器類和Array的區(qū)別、擇取
*? 容器類僅能持有對象引用(指向?qū)ο蟮闹羔?,而不是將對象信息copy一份至數(shù)列某位置。
*? 一旦將對象置入容器內(nèi),便損失了該對象的型別信息。
2、
*? 在各種Lists中,最好的做法是以ArrayList作為缺省選擇。當(dāng)插入、刪除頻繁時(shí),使用LinkedList();
Vector總是比ArrayList慢,所以要盡量避免使用。
*? 在各種Sets中,HashSet通常優(yōu)于HashTree(插入、查找)。只有當(dāng)需要產(chǎn)生一個(gè)經(jīng)過排序的序列,才用TreeSet。
HashTree存在的唯一理由:能夠維護(hù)其內(nèi)元素的排序狀態(tài)。
*? 在各種Maps中
HashMap用于快速查找。
*? 當(dāng)元素個(gè)數(shù)固定,用Array,因?yàn)锳rray效率是最高的。
結(jié)論:最常用的是ArrayList,HashSet,HashMap,Array。
注意:
1、Collection沒有g(shù)et()方法來取得某個(gè)元素。只能通過iterator()遍歷元素。
2、Set和Collection擁有一模一樣的接口。
3、List,可以通過get()方法來一次取出一個(gè)元素。使用數(shù)字來選擇一堆對象中的一個(gè),get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList構(gòu)造堆棧stack、隊(duì)列queue。
5、Map用 put(k,v) / get(k),還可以使用containsKey()/containsValue()來檢查其中是否含有某個(gè)key/value。
HashMap會(huì)利用對象的hashCode來快速找到key。
*? hashing?????? 哈希碼就是將對象的信息經(jīng)過一些轉(zhuǎn)變形成一個(gè)獨(dú)一無二的int值,這個(gè)值存儲(chǔ)在一個(gè)array中。
我們都知道所有存儲(chǔ)結(jié)構(gòu)中,array查找速度是最快的。所以,可以加速查找。
發(fā)生碰撞時(shí),讓array指向多個(gè)values。即,數(shù)組每個(gè)位置上又生成一個(gè)梿表。
6、Map中元素,可以將key序列、value序列單獨(dú)抽取出來。使用keySet()抽取key序列,將map中的所有keys生成一個(gè)Set。
使用values()抽取value序列,將map中的所有values生成一個(gè)Collection。
為什么一個(gè)生成Set,一個(gè)生成Collection?那是因?yàn)?#xff0c;key總是獨(dú)一無二的,value允許重復(fù)。
總結(jié)
以上是生活随笔為你收集整理的摇滚java游戏_java 集合类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随机加解密java_JAVA随机数生成
- 下一篇: 男方报生育险能报多少