java map與list的區(qū)別
Map(映射)
Map是一種把鍵對(duì)象和值對(duì)象映射的集合,它的每一個(gè)元素都包含一個(gè)鍵對(duì)象和值對(duì)象。 Map主要有以下兩個(gè)實(shí)現(xiàn)類:
HashMap:HashMap基于散列表實(shí)現(xiàn),其插入和查詢<K,V>的開銷是固定的,可以通過構(gòu)造器設(shè)置容量和負(fù)載因子來調(diào)整容器的性能。
LinkedHashMap:類似于HashMap,但是迭代遍歷它時(shí),取得<K,V>的順序是其插入次序,或者是最近最少使用(LRU)的次序。
TreeMap:TreeMap基于紅黑樹實(shí)現(xiàn)。查看<K,V>時(shí),它們會(huì)被排序。TreeMap是唯一的帶有subMap()方法的Map,subMap()可以返回一個(gè)子樹。
List(列表)
List的元素以線性方式存儲(chǔ),可以存放重復(fù)對(duì)象,List主要有以下兩個(gè)實(shí)現(xiàn)類:
ArrayList : 長度可變的數(shù)組,可以對(duì)元素進(jìn)行隨機(jī)的訪問,向ArrayList中插入與刪除元素的速度慢。 JDK8 中ArrayList擴(kuò)容的實(shí)現(xiàn)是通過grow()方法里使用語句newCapacity = oldCapacity + (oldCapacity >> 1)(即1.5倍擴(kuò)容)計(jì)算容量,然后調(diào)用Arrays.copyof()方法進(jìn)行對(duì)原數(shù)組進(jìn)行復(fù)制。
LinkedList: 采用鏈表數(shù)據(jù)結(jié)構(gòu),插入和刪除速度快,但訪問速度慢。
比較 | List | Map |
---|---|---|
繼承接口 | Collection | |
常見實(shí)現(xiàn)類 | AbstractList(其常用子類有ArrayList、LinkedList、Vector) | HashMap、HashTable |
常見方法 | add( )、remove( )、clear( )、get( )、contains( )、size( ) | put( )、get( )、remove( )、clear( )、containsKey( )、containsValue( )、keySet( )、values( )、size( ) |
元素 | 可重復(fù) | 不可重復(fù) |
順序 | 有序 | |
線程安全 | Vector線程安全 | Hashtable線程安全 |
php中文網(wǎng),大量的免費(fèi)Java入門教程,歡迎在線學(xué)習(xí)!