2015-07-02 174 views
3

考慮下面的枚舉:順序列表的元素

public enum Type{ 
    INTEGER, 
    DOUBLE, 
    BOOLEAN 
} 

現在,我有以下行:

List<Type> types = Arrays.asList(Type.values()); 

執行列表包含它們放入枚舉的順序相同的元素?這個訂單是否可靠?

回答

0

如果你想要的元素使用LinkedList維持秩序: -

List<Type> types = new LinkedList<Type>(Arrays.asList(Type.values()));

+0

我需要保持相同的順序將它們分別放在枚舉。 – user3663882

+0

我的意思是可靠的訂單 – user3663882

+0

是的,訂單將由'LinkedList'維護,但是你的意思是什麼?*可靠* –

4

是。 Java Language Specification for Enums陳述如下:

/** 
* Returns an array containing the constants of this enum 
* type, in the order they're declared. This method may be 
* used to iterate over the constants as follows: 
* 
* for(E c : E.values()) 
*  System.out.println(c); 
* 
* @return an array containing the constants of this enum 
* type, in the order they're declared 
*/ 
public static E[] values(); 

它將返回一個數組,其中聲明瞭常量。

關於Arrays.asList()方法,你可以依靠它的順序,以及:

返回由指定數組支持的固定大小的列表。 (更改到返回的列表「寫」到該陣列。)

考慮下面的例子,這是初始化一個非常常見的方式List

List<String> stooges = Arrays.asList("Larry", "Moe", "Curly"); 

所述列表的順序將與陣列中的相同。

+0

所以,很顯然,數組的順序將與枚舉的順序一致。但是'Arrays.asList()'方法呢?它是否指定該方法不會改變命令? – user3663882

+0

所以,我沒有找到由Arrays.asList返回的列表的順序是可靠的。 [docs](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T ...))我想,如果我們需要可靠的順序,我們將擁有我們自己構建一個列表... – user3663882

+0

'asList()'的順序是可以預測的,我在我的答案中已經闡明瞭這一點。 – Magnilex