归结为,我试图基于枚举器List<T>
从java.util.List
程序包中构造一个,但是这里有个问题-我不希望第一个值出现在列表中。我想出的办法...好吧...这不是一件好事。
这是我正在使用的代码:
Arrays.asList(Arrays.asList(MyEnum.values()).remove(0));
这有效地从我的枚举中创建了一个List <>,并删除了第一个值,然后尝试使用创建的列表创建另一个列表。
实际上,这可能是正确的方法,但是只是看着它就在尖叫“效率低下”。我在一个我参加过的论坛上向几个人展示了它,他们都说这是多么的丑陋,并笑了起来。但是,他们中没有一个会/不会提供更好的方法来进行此操作。
我认为代码并不丑陋或效率低下。更大的问题是它不起作用,因为由返回的列表Arrays.asList
由基础数组支持,因此具有固定大小。
您可以使用subList
而不是remove
使其工作:
List<MyEnum> list = Arrays.asList(MyEnum.values());
list = list.subList(1, list.size());
这意味着结果列表实际上包含两个列表对象(theasList
和its subList
),它们可能会或可能不会困扰您。但是,您可以ArrayList
从结果列表中创建一个单位:
list = new ArrayList<>(list);
如果您希望最小化对象分配,请循环这些值并将它们直接添加到单个列表中:
MyEnum[] values = MyEnum.values();
List<MyEnum> list = new ArrayList<>(values.length - 1);
for (int i = 1; i < values.length; i++)
list.add(values[i]);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句