考慮下面的枚舉:順序列表的元素
public enum Type{
INTEGER,
DOUBLE,
BOOLEAN
}
現在,我有以下行:
List<Type> types = Arrays.asList(Type.values());
執行列表包含它們放入枚舉的順序相同的元素?這個訂單是否可靠?
考慮下面的枚舉:順序列表的元素
public enum Type{
INTEGER,
DOUBLE,
BOOLEAN
}
現在,我有以下行:
List<Type> types = Arrays.asList(Type.values());
執行列表包含它們放入枚舉的順序相同的元素?這個訂單是否可靠?
如果你想要的元素使用LinkedList
維持秩序: -
List<Type> types = new LinkedList<Type>(Arrays.asList(Type.values()));
是。 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");
所述列表的順序將與陣列中的相同。
所以,很顯然,數組的順序將與枚舉的順序一致。但是'Arrays.asList()'方法呢?它是否指定該方法不會改變命令? – user3663882
所以,我沒有找到由Arrays.asList返回的列表的順序是可靠的。 [docs](http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#asList(T ...))我想,如果我們需要可靠的順序,我們將擁有我們自己構建一個列表... – user3663882
'asList()'的順序是可以預測的,我在我的答案中已經闡明瞭這一點。 – Magnilex
JLS提到values()
「返回包含此枚舉類型常量的數組,按照它們聲明的順序。」(http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.9)。所以,是的,你可以假設順序是一樣的,只要你的枚舉類型不會改變
我需要保持相同的順序將它們分別放在枚舉。 – user3663882
我的意思是可靠的訂單 – user3663882
是的,訂單將由'LinkedList'維護,但是你的意思是什麼?*可靠* –