Java中常用的集合

來源:互聯網
上載者:User

標籤:

  有序列 允許元素重複否
Collection
List
Set AbstractSet 否      
HashSet
TreeSet 是(用二叉樹排序)
Map AbstractMap

使用key-value來映射和儲存資料,

Key必須惟一,value可以重複

HashMap
TreeMap 是(用二叉樹排序)

 

幾個面試常見問題:
1.Q:ArrayList和Vector有什麼區別?HashMap和HashTable有什麼區別?
A:Vector和HashTable是線程同步的(synchronized)。效能上,ArrayList和HashMap分別比Vector和Hashtable要好。

2.Q:大致講解java集合的體繫結構
A:List、Set、Map是這個集合體系中最主要的三個介面。
其中List和Set繼承自Collection介面。
Set不允許元素重複。HashSet和TreeSet是兩個主要的實作類別。
List有序且允許元素重複。ArrayList、LinkedList和Vector是三個主要的實作類別。
Map也屬於集合系統,但和Collection介面不同。Map是key對value的映射集合,其中key列就是一個集合。key不能重複,但是value可以重複。HashMap、TreeMap和Hashtable是三個主要的實作類別。
SortedSet和SortedMap介面對元素按指定規則排序,SortedMap是對key列進行排序。

3.Q:Comparable和Comparator區別
A:調用java.util.Collections.sort(List list)方法來進行排序的時候,List內的Object都必須實現了Comparable介面。
java.util.Collections.sort(List list,Comparator c),可以臨時聲明一個Comparator 來實現排序。
Collections.sort(imageList, new Comparator() {
public int compare(Object a, Object b) {
int orderA = Integer.parseInt( ( (Image) a).getSequence());
int orderB = Integer.parseInt( ( (Image) b).getSequence());
return orderA - orderB;
}
});
如果需要改變排列順序
改成return orderb - orderA 即可。

4.Q:簡述equals()和hashCode()
A:...不知道。下回分解

public interface
Collection
extends Iterable


public interface
List
extends Collection


public abstract class
AbstractList
extends AbstractCollection
implements List


public class
Vector
extends AbstractList
implements List,
RandomAccess,
java.lang.Cloneable,
java.io.Serializable
基於Array
是“sychronized”的


public class
ArrayList
extends AbstractList
implements List,
RandomAccess,
Cloneable,
java.io.Serializable
基於Array
ArrayList是非同步的。所以在效能上要比Vector優越一些


public class
LinkedList
extends AbstractSequentialList
implements List,
Queue,
Cloneable,
java.io.Serializable
不基於Array

基於Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作




List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本區別
public abstract class AbstractSet
extends AbstractCollection
implements Set


public class HashSet
extends AbstractSet
implements Set, Cloneable, java.io.Serializable
HashSet的儲存方式是把HashMap中的Key作為Set的對應儲存項


public class LinkedHashSet
extends HashSet
implements Set, Cloneable, java.io.Serializable


public class TreeSet
extends AbstractSet
implements SortedSet, Cloneable, java.io.Serializable
它是通過SortedMap來實現的




public interface Map<K,V>


public abstract class AbstractMap<K,V>
implements Map<K,V>


public class HashMap<K,V>
extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable


public class TreeMap<K,V>
extends AbstractMap<K,V>
implements SortedMap<K,V>, Cloneable, java.io.Serializable

HashMap通過hashcode對其內容進行快速尋找,而TreeMap中所有的元素都保持著某種固定的順序,如果你需要得到一個有序的結果你就應該使用TreeMap(HashMap中元素的排列順序是不固定的)

 

Java中常用的集合

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.