У меня есть два EnumSet.
Я хочу передать определенные значения от одного к другому, но сохранить в обоих объектах те значения, которые считаются «неподвижными». Пример кода...
Public enum MaterialTypes {
STONE,
METAL,
WOOD,
STICKS,
STRAW;
// STONE & METAL are "immoveable"...
public static EnumSet<MaterialTypes> IMMOVEABLE_TYPES = EnumSet.of(STONE, METAL);
}
EnumSet<MaterialTypes> fromTypes = EnumSet.of(CellType.STONE, CellType.WOOD, CellType.STICKS);
EnumSet<MaterialTypes> toTypes = EnumSet.of(CellType.METAL, CellType.STRAW);
// How to preserve the IMMOVEABLE types, but transfer all the other types from one object to the other?
// E.g. Desired result...
// fromTypes = STONE (i.e. STONE preserved, WOOD & STICKS removed)
// toTypes = METAL, WOOD, STICKS (i.e. METAL preserved, STRAW removed, WOOD & STICKS added)
Я пробовал разные методы, но все они включают в себя множество шагов и создание временных EnumSet. Мне интересно, есть ли действительно эффективный метод и (конечно), что это такое.
Это делает мою голову в!
Спасибо.
ОБНОВЛЕНИЕ:
Один метод, который я пробовал (который, я думаю, может быть неэффективным) для достижения желаемого результата...
EnumSet<MaterialTypes> tmpSet = fromTypes.clone(); // Create temporary copy of fromTypes
tmpSet.removeAll(MaterialTypes.IMMOVEABLE_TYPES); // Leave only the MOVEABLE types in tmpSet
fromTypes.retainAll(MaterialTypes.IMMOVEABLE_TYPES); // Leave only the IMMOVEABLE type in fromTypes
toTypes.retainAll(MaterialTypes.IMMOVEABLE_TYPES); // Leave only the IMMOVEABLE types in toTypes
toTypes.addAll(tmpSet); // Add the MOVEABLE types (originally in fromTypes)
toTypes = METAL, WOOD, STRAW (i.e. METAL preserved, STRAW removed, WOOD & STICKS added)
, что не имеет смысла. Не могли бы вы исправить это? Не могли бы вы также уточнить, что именно вы пытаетесь сделать? Если возможно, покажите нам написанный вами код, который делает это, но вы не считаете его эффективным. - person Radiodef   schedule 25.04.2014