У меня есть такой 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)'? – immibis
А как насчет 'remoteFruits'? Для перетасовки 'remoteFruits' мне нужно преобразовать в список, чтобы я мог сделать это легко. – user1950349