【发布时间】:2015-08-18 10:18:56
【问题描述】:
我有一个这样的 ENUM,我总能从中得到我的 localFruit,它可以是 APPLE 或 ORANGE 或 BANANA。
public enum Fruits {
// it can have more elements here
APPLE, ORANGE, BANANA;
// some code
}
假设 APPLE 是我的localFruit,那么ORANGE 和BANANA 就是我的remoteFruits。我需要洗牌我的remoteFruits,然后确保我的localFruit 在我的列表顶部,然后是remoteFruits。
下面是我的代码,我在其中进行改组并将其添加到原始 result 列表中:在下面的代码中,CURRENT_FRUIT 可以是 APPLE 或 ORANGE 或 BANANA。
private static List<Fruits> getFruitsInOrder() {
EnumSet<Fruits> localFruit = EnumSet.of(CURRENT_FRUIT);
EnumSet<Fruits> remoteFruits = EnumSet.complementOf(localFruit);
List<Fruits> result = new ArrayList<Fruits>(remoteFruits);
Collections.shuffle(result);
// first element in the list will always be the local fruit
result.addAll(0, new ArrayList<Fruits>(localFruit));
return result;
}
由于这段代码会被调用很多次,所以想看看我做错了什么,这可能是性能方面的瓶颈?我的代码在性能方面还可以吗?
我的主要目标是将localFruit 放在列表顶部,然后是remoteFruits(但我需要在添加到我的结果列表之前将它们洗牌)。
【问题讨论】:
-
为什么不
result.add(0, CURRENT_FRUIT)? -
那么
remoteFruits呢?对于remoteFruits的改组,我需要转换为列表以便我可以轻松地做到这一点。
标签: java list arraylist enums linked-list