列表元素的顺序

时间:2015-07-02 07:55:40

标签: java enums

考虑以下枚举:

public enum Type{
     INTEGER,
     DOUBLE,
     BOOLEAN
}

现在,我有以下几行:

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

列表是否包含它们放入枚举的顺序相同的元素?这个订单可靠吗?

3 个答案:

答案 0 :(得分: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()方法,您也可以依赖它的顺序:

  

返回由指定数组支持的固定大小的列表。 (对返回列表的更改&#34;通过&#34;写入数组。)

考虑以下示例,这是初始化List的一种非常常见的方法:

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

列表的顺序与数组中的顺序相同。

答案 1 :(得分:2)

JLS提到values() &#34;按照它们声明的顺序返回一个包含此枚举类型常量的数组。&#34; ({ {3}})。所以是的,只要您的枚举类型没有改变,您就可以假设订单是相同的

有关详细信息,请参阅http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.9

答案 2 :(得分:0)

如果您想维护元素顺序,请使用LinkedList: -

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